当前位置: 首页 > 知识库问答 >
问题:

简单的剪刀石头布游戏

柴声
2023-03-14

我写了一个“石头、布、剪刀”游戏:

puts "Hello, this is a rock, papers, scissors game. Let's play."
puts "Player 1, plase enter your choice: \n"
puts "r for rock. \np for paper. \ns for scissors."
p1 = gets.chomp.downcase

puts "Player 2, please enter your choice: \n"
puts "r for rock. \np for paper. \ns for scissors."
p2 = gets.chomp.downcase

if p1 == 'r' && p2 == 's'
  puts "Player 1 wins."
elsif p1 == 'r' && p2 == 'p'
  puts "Player 2 wins."
elsif p1 == 'r' && p2 == 'r'
  puts "Tie."
elsif p1 == 'p' && p2 == 'r'
  puts "Player 1 wins."
elsif p1 == 'p' && p2 == 's'
  puts "Player 2 wins."
elsif p1 == 'p' && p2 == 'p'
  puts "Tie."
elsif p1 == 's' && p2 == 'r'
  puts "Player 2 wins."
elsif p1 == 's' && p2 == 'p'
  puts "Player 1 wins."
elsif p1 == 's' && p2 == 's'
  puts "Tie."
end

它可以工作,但是,这是很多elsifs,我知道这对于case是可能的...当语句时,问题是我不知道如何。

我试着根据输入使用一个返回语句:“返回0代表石头,1代表布,2代表剪刀”,然后使用一个条件来表示“嘿,如果一个玩家返回1,另一个玩家也返回1,那么就把‘平局’放进去,其他可能的结果也一样。”。

我试图将一个数字与结果联系起来:return-1,当玩家一赢时,return 0,表示平局,返回2,表示玩家二赢。

我是这样做的,但还是一样的,我觉得很糟糕:

case p1
when p1 == 'r' && p2 == 'r'
  result = 0
when p1 == 'r' && p2 == 'p'
  result = 1
when p1 == 'r' && p2 == 's'
  result = -1
when p1 == 'p' && p2 == 'r'
  result = -1
when p1 == 'p' && p2 == 'p'
  result = 0
when p1 == 'p' && p2 == 's'
  result = 1
when p1 == 's' && p2 == 'r'
  result = 1
when p1 == 's' && p2 == 'p'
  result = -1
when p1 == 's' && p2 == 's'
  result = 0
end

if result == -1
  puts "P1 wins"
elsif result == 0
  puts "Tie"
elsif result == 1
  puts "P2 wins"
end

我将感谢任何形式的帮助。


共有3个答案

宋新知
2023-03-14

你也可以像ruby那样说

  If p1 = 'r' then

转到R endif如果p1='p'然后转到S endif

然后在你的goto地点

R:

如果p2='r'则放“领带”

然而,p1=p2的想法。。。是一个很好的例子。

壤驷华美
2023-03-14

你可以试试这样的方法:

if (p1 == p2)
  puts "Tie"
elsif (p1 == 'r' && p2 == 'p') ||
      (p1 == 'p' && p2 == 's') ||
      (p1 == 's' && p2 == 'r')
  puts "P2 wins"
else
  puts "P1 wins"
end
宋望
2023-03-14

数组可以用作圆环,每个项目的右侧有一个较弱的项目,左侧有一个较强的项目。

weapons = ['paper', 'rock', 'scissors']

用你最喜欢的方式选择武器

w1 = weapons[rand(weapons.length)]
w2 = weapons[rand(weapons.length)]

旋转数组直到w1位于中心

while weapons[1] != w1
    weapons.rotate! 1
end

现在,结果由武器阵列中的w2指数表示,方便。

verbs = ['is beat by', 'ties', 'beats']
puts "#{w1} #{verbs[weapons.index(w2)]} #{w2}"

几次运行的输出示例:

paper beats rock
paper ties paper
rock beats scissors
scissors beats paper
rock is beat by paper

你可以创造性地添加一个动词数组散列,每个武器一个,使用w1作为键,这样它就可以输出(例如)纸盖岩石等。

 类似资料:
  • 本文向大家介绍Python实现石头剪刀布游戏,包括了Python实现石头剪刀布游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了一个简单的小游戏,分享给大家。 利用随机函数制作石头剪刀布小游戏 程序只运行一次 每次出拳一次要运行一次,很麻烦,要让程序一直运行 在程序中加个while条件就解决啦 长期玩游戏不利于身心健康,玩游戏要有度 那就默认游戏一开始有三次机会吧,每玩一次减掉一次

  • 本文向大家介绍JavaFX实现石头剪刀布小游戏,包括了JavaFX实现石头剪刀布小游戏的使用技巧和注意事项,需要的朋友参考一下 用JavaFX写一个石头剪刀布的小游戏,供大家参考,具体内容如下 课程上布置的作业,其实java很少用来写这种程序的 - GUI界面部分 - 石头剪刀布的逻辑部分 书上教的是JavaFX,其实还有很多方法,书上说AWT和Swing基本上淘汰了,但事实上… 代码 MyJav

  • 本文向大家介绍Java实现石头剪刀布小游戏,包括了Java实现石头剪刀布小游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Java实现石头剪刀布的具体代码,供大家参考,具体内容如下 代码: 运行效果: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Java实现的剪刀石头布游戏示例,包括了Java实现的剪刀石头布游戏示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java实现的剪刀石头布游戏。分享给大家供大家参考,具体如下: ChoiceAnswer.java Game.java 运行结果: 更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《

  • 我的任务是编写一个程序,让用户对着电脑玩石头、纸、剪刀的游戏。 说明: 主方法应该有两个嵌套的循环,其中外循环将允许用户根据需要经常玩游戏,内循环将玩游戏,只要有一个平局。在userChoice()方法的while循环中调用方法isValidChoice()来验证用户输入的选项必须是“Rock”、“Paper”或“Scissors”。如果输入了无效的字符串,isValidChoice()将返回fa

  • 我正在用java编写一个石头剪刀游戏,但有些事情我想不出来。首先,我想让用户可以输入“Rock”或“paper”,而不是1、2和3,但我想不出来。其次,我应该使用嵌套的if-else语句,但我也不知道如何使用我所做的。我的代码如下 导入Java . util . scanner;公共类RockGame {