鱼C论坛

 找回密码
 立即注册
查看: 731|回复: 10

[已解决]石头剪刀布的代码

[复制链接]
发表于 2025-3-23 18:05:28 | 显示全部楼层 |阅读模式
1鱼币
求助
悬赏令
石头剪刀布代码
2个鱼币!!!!!!!!!!!!!!!!’
最佳答案
2025-3-23 18:05:29
石头剪刀布游戏代码  

下面是一个简单的Python实现,支持玩家与计算机对战:  

  1.   
  2. import random  

  3. def get_computer_choice():  
  4.     return random.choice(["石头", "剪刀", "布"])  

  5. def get_winner(player, computer):  
  6.     if player == computer:  
  7.         return "平局!"  
  8.     elif (player == "石头" and computer == "剪刀") or \  
  9.          (player == "剪刀" and computer == "布") or \  
  10.          (player == "布" and computer == "石头"):  
  11.         return "你赢了!"  
  12.     else:  
  13.         return "你输了!"  

  14. def main():  
  15.     print("欢迎来到石头剪刀布游戏!")  
  16.     player_choice = input("请输入 石头/剪刀/布: ")  
  17.     if player_choice not in ["石头", "剪刀", "布"]:  
  18.         print("输入无效,请输入 石头/剪刀/布")  
  19.         return  

  20.     computer_choice = get_computer_choice()  
  21.     print(f"电脑选择了: {computer_choice}")  
  22.     print(get_winner(player_choice, computer_choice))  

  23. if __name__ == "__main__":  
  24.     main()  
复制代码


这个代码会让玩家输入 石头剪刀,然后与计算机随机选择的结果进行比较,判断输赢。希望对你有帮助!{:5_144:}

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

最佳答案

查看完整内容

石头剪刀布游戏代码 下面是一个简单的Python实现,支持玩家与计算机对战: 这个代码会让玩家输入 石头、剪刀 或 布,然后与计算机随机选择的结果进行比较,判断输赢。希望对你有帮助!{:5_144:} 以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-23 18:05:29 | 显示全部楼层    本楼为最佳答案   
石头剪刀布游戏代码  

下面是一个简单的Python实现,支持玩家与计算机对战:  

  1.   
  2. import random  

  3. def get_computer_choice():  
  4.     return random.choice(["石头", "剪刀", "布"])  

  5. def get_winner(player, computer):  
  6.     if player == computer:  
  7.         return "平局!"  
  8.     elif (player == "石头" and computer == "剪刀") or \  
  9.          (player == "剪刀" and computer == "布") or \  
  10.          (player == "布" and computer == "石头"):  
  11.         return "你赢了!"  
  12.     else:  
  13.         return "你输了!"  

  14. def main():  
  15.     print("欢迎来到石头剪刀布游戏!")  
  16.     player_choice = input("请输入 石头/剪刀/布: ")  
  17.     if player_choice not in ["石头", "剪刀", "布"]:  
  18.         print("输入无效,请输入 石头/剪刀/布")  
  19.         return  

  20.     computer_choice = get_computer_choice()  
  21.     print(f"电脑选择了: {computer_choice}")  
  22.     print(get_winner(player_choice, computer_choice))  

  23. if __name__ == "__main__":  
  24.     main()  
复制代码


这个代码会让玩家输入 石头剪刀,然后与计算机随机选择的结果进行比较,判断输赢。希望对你有帮助!{:5_144:}

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-23 21:38:18 | 显示全部楼层
  1. import random
  2. d = ('剪刀' , '石头' , '布')
  3. while True :
  4.     k = input('1 - %s , 2 - %s , 3 - %s : ' % (d[0] , d[1] , d[2]))
  5.     if k:
  6.         if k in '123' :
  7.             x = int(k) - 1
  8.             z = random . randint(0 , 2)
  9.             if x == z :
  10.                 p = 0
  11.             elif x > z :
  12.                 p = 1 if x - z == 1 else 2
  13.             else :
  14.                 p = 2 if z - x == 1 else 1
  15.             if p == 0 :
  16.                 print('您:%s - 计算机:%s , 【%s】' % (d[x] , d[z] , '平'))
  17.             elif p == 1 :
  18.                 print('您:%s - 计算机:%s , 您【%s】' % (d[x] , d[z] , '赢'))
  19.             else :
  20.                 print('您:%s - 计算机:%s , 您【%s】' % (d[x] , d[z] , '输'))
  21.         print()                              
  22.     else :
  23.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-23 22:36:16 | 显示全部楼层
  1. import tkinter as tk
  2. from tkinter import font
  3. import random

  4. class RockPaperScissorsGame:
  5.     def __init__(self, master):
  6.         self.master = master
  7.         master.title("石头剪刀布")
  8.         master.geometry("400x400")
  9.         master.configure(bg="#F0F0F0")

  10.         # 初始化得分
  11.         self.player_score = 0
  12.         self.computer_score = 0

  13.         # 创建自定义字体
  14.         self.title_font = font.Font(family="Arial", size=16, weight="bold")
  15.         self.result_font = font.Font(family="Arial", size=14)
  16.         self.score_font = font.Font(family="Arial", size=12)

  17.         # 创建界面元素
  18.         self.create_widgets()

  19.     def create_widgets(self):
  20.         # 电脑选择显示
  21.         self.computer_choice_label = tk.Label(
  22.             self.master,
  23.             text="电脑出拳:等待中...",
  24.             font=self.title_font,
  25.             bg="#F0F0F0"
  26.         )
  27.         self.computer_choice_label.pack(pady=10)

  28.         # 结果显示
  29.         self.result_label = tk.Label(
  30.             self.master,
  31.             text="点击下方按钮开始游戏",
  32.             font=self.result_font,
  33.             bg="#F0F0F0",
  34.             fg="#333333"
  35.         )
  36.         self.result_label.pack(pady=15)

  37.         # 玩家选择按钮
  38.         button_frame = tk.Frame(self.master, bg="#F0F0F0")
  39.         button_frame.pack(pady=10)

  40.         choices = ["石头", "剪刀", "布"]
  41.         colors = ["#FF6666", "#66CC66", "#6666FF"]
  42.         for choice, color in zip(choices, colors):
  43.             btn = tk.Button(
  44.                 button_frame,
  45.                 text=choice,
  46.                 font=self.title_font,
  47.                 bg=color,
  48.                 width=8,
  49.                 command=lambda c=choice: self.play_round(c)
  50.             )
  51.             btn.pack(side=tk.LEFT, padx=5)

  52.         # 比分显示
  53.         self.score_label = tk.Label(
  54.             self.master,
  55.             text=f"玩家 {self.player_score} : {self.computer_score} 电脑",
  56.             font=self.score_font,
  57.             bg="#F0F0F0",
  58.             fg="#444444"
  59.         )
  60.         self.score_label.pack(pady=20)

  61.         # 重置按钮
  62.         reset_btn = tk.Button(
  63.             self.master,
  64.             text="重置比分",
  65.             font=self.score_font,
  66.             command=self.reset_scores
  67.         )
  68.         reset_btn.pack()

  69.     def play_round(self, player_choice):
  70.         # 电脑随机选择
  71.         computer_choice = random.choice(["石头", "剪刀", "布"])
  72.         self.computer_choice_label.config(text=f"电脑出拳:{computer_choice}")

  73.         # 判断胜负
  74.         result = self.get_result(player_choice, computer_choice)

  75.         # 更新比分和显示
  76.         if "赢" in result:
  77.             self.player_score += 1
  78.             color = "green"
  79.         elif "输" in result:
  80.             self.computer_score += 1
  81.             color = "red"
  82.         else:
  83.             color = "blue"

  84.         self.result_label.config(text=result, fg=color)
  85.         self.score_label.config(text=f"玩家 {self.player_score} : {self.computer_score} 电脑")

  86.     def get_result(self, player, computer):
  87.         if player == computer:
  88.             return "平局!"
  89.         winning_combinations = {
  90.             "石头": "剪刀",
  91.             "剪刀": "布",
  92.             "布": "石头"
  93.         }
  94.         if winning_combinations[player] == computer:
  95.             return "你赢了!(*^▽^*)"
  96.         return "你输了!(>﹏<)"

  97.     def reset_scores(self):
  98.         self.player_score = 0
  99.         self.computer_score = 0
  100.         self.score_label.config(text=f"玩家 {self.player_score} : {self.computer_score} 电脑")
  101.         self.computer_choice_label.config(text="电脑出拳:等待中...")
  102.         self.result_label.config(text="比分已重置", fg="#333333")


  103. if __name__ == "__main__":
  104.     root = tk.Tk()
  105.     game = RockPaperScissorsGame(root)
  106.     root.mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-24 10:27:57 | 显示全部楼层
import random

choices = ['石头', '剪刀', '布']

while True:
    user_choice = input('请输入你的选择(石头/剪刀/布,输入q退出):')
    if user_choice == 'q':
        break
    if user_choice not in choices:
        print('输入无效,请重新输入。')
        continue
    computer_choice = random.choice(choices)
    print(f'你选择了:{user_choice},电脑选择了:{computer_choice}')
    if user_choice == computer_choice:
        print('平局!')
    elif (user_choice == '石头' and computer_choice == '剪刀') or (user_choice == '剪刀' and computer_choice == '布') or (user_choice == '布' and computer_choice == '石头'):
        print('你赢了!')
    else:
        print('你输了!')
这段代码通过一个无限循环让玩家可以持续进行游戏,直到输入 'q' 退出。每次游戏时,玩家输入自己的选择,程序随机生成电脑的选择,然后根据规则判断胜负并输出结果。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-26 09:49:49 | 显示全部楼层
都是大神啊,我什么时候才能达到这种水准啊!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-27 09:09:31 | 显示全部楼层
DeepSeek的代码程序:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <limits>

using namespace std;

int main() {
    srand(time(0)); // 初始化随机种子
    char playAgain;

    do {
        // 用户输入部分
        int userChoice;
        while (true) {
            cout << "\n请出拳(1-石头,2-剪刀,3-布): ";
            if (cin >> userChoice) {
                if (userChoice >= 1 && userChoice <= 3) {
                    break;
                }
                cout << "无效输入,请输入1-3之间的数字!\n";
            } else {
                cout << "无效输入,请输入数字!\n";
                cin.clear();
                cin.ignore(numeric_limits<streamsize>::max(), '\n');
            }
        }

        // 电脑随机出拳
        int computerChoice = rand() % 3 + 1;
        string choices[] = {"石头", "剪刀", "布"};
        
        cout << "\n你出了: " << choices[userChoice-1];
        cout << "\n电脑出了: " << choices[computerChoice-1] << endl;

        // 胜负判断
        if (userChoice == computerChoice) {
            cout << "平局!" << endl;
        } else if ((userChoice == 1 && computerChoice == 2) ||
                   (userChoice == 2 && computerChoice == 3) ||
                   (userChoice == 3 && computerChoice == 1)) {
            cout << "你赢了!" << endl;
        } else {
            cout << "电脑赢了!" << endl;
        }

        // 是否继续游戏
        cout << "\n是否继续游戏?(y/n): ";
        cin >> playAgain;
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    } while (tolower(playAgain) == 'y');

    cout << "游戏结束,谢谢参与!" << endl;
    return 0;
}
代码特点:

输入验证:确保用户输入的是有效数字(1-3),处理非数字输入的情况

随机生成电脑出拳结果(使用时间作为随机种子)

使用数组存储和显示中文出拳结果

清晰的胜负判断逻辑

支持重复游戏直到用户选择退出

友好的用户提示信息

游戏规则:

石头(1)赢剪刀(2)

剪刀(2)赢布(3)

布(3)赢石头(1)

使用方法:

运行程序后会提示输入数字选择出拳

电脑会随机生成出拳结果

程序会自动判断胜负并显示结果

每次游戏结束后可选择继续或退出

DeepSeek的思考过程:
嗯,用户让我用C++写一个石头剪刀布的代码。首先,我得考虑用户的需求是什么。可能是一个简单的控制台游戏,让用户和电脑对战,对吧?那我得先理清楚游戏的流程。

首先,游戏需要用户输入他们的选择,石头、剪刀或者布。然后电脑随机生成一个选择。接下来比较两者的选择,判断胜负。这个过程需要循环,可能让用户多次玩,直到他们决定退出。

那我得考虑如何获取用户的输入。可能用数字代替,比如1代表石头,2代表剪刀,3代表布,或者用字符R、S、P之类的。不过数字可能更容易处理,特别是对于新手来说,输入数字比较方便。

然后是电脑的选择。需要生成一个随机数,范围在1到3之间。C++中可以用rand()函数,不过记得要先播种,用srand和时间函数来初始化,这样每次运行的结果才会不同。比如srand(time(0))。

接下来是比较用户和电脑的选择。石头赢剪刀,剪刀赢布,布赢石头。这部分逻辑需要处理所有可能的组合。可以用if-else语句来判断,或者用一些数学技巧,比如模运算来判断胜负,这样代码可能更简洁。例如,(userChoice - computerChoice + 3) % 3,如果结果是1,用户输;如果是2,用户赢,平局的话就是0。不过这种方法可能需要解释,用户可能更易读的条件语句。

另外,要处理无效输入的情况。如果用户输入的不是1、2、3,应该提示错误,并重新输入。这时候可能需要一个循环,直到输入有效为止。

游戏是否循环进行也是一个点。每次结束后询问用户是否继续,输入y或n之类的。所以主循环应该是一个do-while结构,条件取决于用户是否继续。

然后输出结果要友好,显示电脑的选择和胜负情况。比如“电脑出了石头,你赢了!”之类的提示。

现在把这些步骤拆解成代码结构。主函数里有一个do-while循环,每次循环中:

1. 显示选项:石头、剪刀、布,提示用户输入。

2. 读取用户输入,验证是否有效,无效则提示重新输入。

3. 生成电脑的选择。

4. 比较两者,判断胜负。

5. 输出结果。

6. 询问是否继续。

另外,可能需要将比较逻辑封装成一个函数,或者直接在main里处理。考虑到代码的简洁性,可能直接在main里处理。

可能的错误点:用户输入处理时,如果输入的是非数字,会导致cin进入错误状态,需要用cin.clear()和忽略缓冲区中的无效字符。比如,如果用户输入了字母,cin会失败,这时候需要处理。

所以,在用户输入的部分,应该检查输入是否成功,并处理无效的情况。例如:

int userChoice;

while (true) {

cout << "请输入你的选择:";

if (cin >> userChoice) {

if (userChoice >=1 && userChoice <=3) {

break;

} else {

cout << "无效输入,请重新输入1、2或3。" << endl;

}

} else {

cout << "无效输入,请输入数字。" << endl;

cin.clear();

cin.ignore(numeric_limits<streamsize>::max(), '\n');

}

}

这样处理可以确保用户输入的是有效的数字。

然后是电脑的选择,使用rand()%3 +1来得到1-3的随机数。

比较部分,可以用多个if条件判断。比如:

if (userChoice == computerChoice) {

// 平局

} else if ((userChoice == 1 && computerChoice == 2) ||

(userChoice == 2 && computerChoice == 3) ||

(userChoice == 3 && computerChoice == 1)) {

// 用户赢

} else {

// 电脑赢

}

或者用更简洁的方式,比如之前提到的模运算方法。但为了可读性,可能用条件判断更直观。

然后显示结果时,需要将数字转换为对应的字符串,比如1变成“石头”,可以用一个数组或者switch语句来处理。

例如:

string choices[] = {"石头", "剪刀", "布"};

cout << "电脑出了" << choices[computerChoice -1] << endl;

这样,当computerChoice是1时,对应数组下标0,即“石头”。

最后,询问是否继续,用户输入y或n,处理大小写,比如转换为小写,判断是否继续。

综上,把这些部分整合起来,就能写出完整的代码了。测试的时候要确保各种情况都能正确处理,包括平局、胜负,以及无效输入的情况。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-28 16:30:21 | 显示全部楼层

看看我写的可对

本帖最后由 wangxingjie_123 于 2025-3-28 16:34 编辑

#\user\python
import random
computer = random.tandint(a:1,b:3)
uif (user == 1 and computer == 2) or (user == 2 and computer == 3) or (user == 3 and computer == 1):
    print('哈哈哈...你赢了!')
elif (user == 1 and computer == 3) or (user == 2 and computer == 1) or (user == 3 and computer == 2):
    print('哎呀...你输了!')
else:
    print('平局,再来一局!')ser = int(input(“请输入你的招数(1:石头,2:剪刀,3:布):”))
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-28 18:06:13 From FishC Mobile | 显示全部楼层
import random  

def get_computer_choice():  
    return random.choice(["石头", "剪刀", "布"])  

def get_winner(player, computer):  
    if player == computer:  
        return "平局!"  
    elif (player == "石头" and computer == "剪刀") or \  
         (player == "剪刀" and computer == "布") or \  
         (player == "布" and computer == "石头"):  
        return "你赢了!"  
    else:  
        return "你输了!"  

def main():  
    print("欢迎来到石头剪刀布游戏!")  
    player_choice = input("请输入 石头/剪刀/布: ")  
    if player_choice not in ["石头", "剪刀", "布"]:  
        print("输入无效,请输入 石头/剪刀/布")  
        return  

    computer_choice = get_computer_choice()  
    print(f"电脑选择了: {computer_choice}")  
    print(get_winner(player_choice, computer_choice))  

if __name__ == "__main__":  
    main()  
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-29 12:33:37 | 显示全部楼层
学习来了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-3-29 18:10:15 | 显示全部楼层
import random

def get_user_choice():
    while True:
        user_choice = input("请输入你的选择(石头、剪刀、布):").strip()
        if user_choice in ["石头", "剪刀", "布"]:
            return user_choice
        else:
            print("输入无效,请重新输入。")

def get_computer_choice():
    choices = ["石头", "剪刀", "布"]
    return random.choice(choices)

def determine_winner(user_choice, computer_choice):
    if user_choice == computer_choice:
        return "平局"
    elif (
        (user_choice == "石头" and computer_choice == "剪刀") or
        (user_choice == "剪刀" and computer_choice == "布") or
        (user_choice == "布" and computer_choice == "石头")
    ):
        return "你赢了"
    else:
        return "你输了"

def play_game():
    user_choice = get_user_choice()
    computer_choice = get_computer_choice()
    print(f"你选择了:{user_choice}")
    print(f"电脑选择了:{computer_choice}")
    result = determine_winner(user_choice, computer_choice)
    print(result)

if __name__ == "__main__":
    play_game()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-5 19:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表