1.玩家选择剪刀石头布的其中一个,电脑随机出剪刀石头布的其中一个比输赢

(赢的一方加一分,输的一方不加分,平局各加一分,五次为一局)

代码附下:

import random
from tkinter import *
from tkinter import messagebox
from PIL import Image, ImageTkclass Game():def __init__(self):# 创建窗口,设置窗口大小、标题、背景等self.root = Tk()  # Toplevel()self.root.title = ('剪刀石头布')  # 标题self.root['bg'] = 'blue'  # 背景色self.root.geometry('500x500')  # 窗口大小# 定义字符串变量self.player = StringVar()self.computer = StringVar()self.result = StringVar()  # 显示比分self.prompt = StringVar()  # 显示提示信息# 设置对象变量,玩家、电脑得分,猜拳次数,图像列表self.score_player = 0self.score_computer = 0self.count = 0self.pics = ['2.jpg', '1.jpg', '3.jpg']# 设置字符串变量的初始值 :set方法进行设置self.player.set('玩家 0')self.computer.set('电脑 0')self.layout()self.root.mainloop()  # 循环更新显示def layout(self):  # 窗口布局# 显示标题Label(self.root, text='剪刀石头布', font=('黑体', 30), fg='white', bg='blue').place(x=150, y=20)# 显示玩家的得分标签Label(self.root, textvariable=self.player, font=('宋体', 22), fg='white', bg='blue').place(x=80, y=100)# 显示电脑的得分标签Label(self.root, textvariable=self.computer, font=('宋体', 22), fg='white', bg='blue').place(x=330, y=100)# 打开图像,以图像作为按钮供玩家选择# 剪刀image1 = Image.open(self.pics[0]).resize([70, 70])# ImageTk模块支持从图片中创建和修改Tkinter位图图像和PhotoImage对象。self.photo1 = ImageTk.PhotoImage(image1)  # 转为与tkinter兼容的图像对象# 约定剪刀是0,石头是1,布是2Button(self.root, image=self.photo1, command=lambda: self.judge(0)).place(x=90, y=150)# 石头image2 = Image.open(self.pics[1]).resize([70, 70])self.photo2 = ImageTk.PhotoImage(image2)Button(self.root, image=self.photo2, command=lambda: self.judge(1)).place(x=90, y=250)# 布image3 = Image.open(self.pics[2]).resize([70, 70])self.photo3 = ImageTk.PhotoImage(image3)Button(self.root, image=self.photo3, command=lambda: self.judge(2)).place(x=90, y=350)# 电脑的选择布局,图片会更新改变所以必须将按钮和图像对象没为全局的image4 = Image.open('4.jpg').resize([70, 70])self.photo4 = ImageTk.PhotoImage(image4)self.but_computer = Button(self.root, image=self.photo4)self.but_computer.place(x=350, y=250)# 显示提示信息Label(self.root, textvariable=self.prompt, font=('宋体', 22), fg='red', bg='blue').place(x=200, y=150)# 显示比分结果信息Label(self.root, textvariable=self.result, font=('宋体', 28), fg='red', bg='blue').place(x=200, y=250)def judge(self, n):  # 判断模块# 每次收到单击按钮事件,就将次数加1self.count += 1# 产生随机数,电脑根据随机数选择图片并显示self.r = random.randint(0, 2)image_computer = Image.open(self.pics[self.r]).resize([70,70])self.photo_c = ImageTk.PhotoImage(image_computer)  # 必须为全局变量,即对象变量# 在tkiner中对象的属性进行修改,用configureself.but_computer.configure(image=self.photo_c)# 进行输赢判断if self.r == n:self.score_computer += 1self.score_player += 1# 实时更新比分,用set()self.computer.set('电脑' + str(self.score_computer))self.player.set('玩家' + str(self.score_player))self.prompt.set('平局')# 玩家赢 0-2,1-0,2-1elif (n == 0 and self.r == 2) or (n == 1 and self.r == 0) or (n == 2 and self.r == 1):self.score_player += 1self.player.set('玩家' + str(self.score_player))self.prompt.set('玩家赢')else:self.score_computer += 1self.computer.set('电脑' + str(self.score_computer))self.prompt.set('电脑赢')# 更新比分显示self.result.set(str(self.score_player) + ' : ' + str(self.score_computer))# 当游戏次数达到5次时,当前游戏结束,显示比赛结果if self.count == 5:if self.score_player > self.score_computer:self.prompt.set('本次游戏玩家赢')elif self.score_player < self.score_computer:self.prompt.set('本次游戏电脑赢')else:self.prompt.set('本次游戏双方势均力敌')# 显示对话框,根据选择进行不同的判断处理msg = messagebox.askyesnocancel('提示', '本轮游戏结束,是否重新开始?')# 选择重新开始, 则将所有变量初始化if msg == True:self.player.set('玩家 0')self.computer.set('电脑 0')self.score_player = 0self.score_computer = 0self.count = 0image_computer = Image.open('4.jpg').resize([70,70])self.photo_c = ImageTk.PhotoImage(image_computer)self.but_computer.configure(image=self.photo_c)self.result.set(str(self.score_player) + ' : ' + str(self.score_computer))else:messagebox.askyesnocancel('警告', '游戏结束!!!')self.root.destroy() #关闭窗口
Game()

【python】用tkinter界面化——剪刀石头布相关推荐

  1. 【python】tkinter界面化+百度API—聊天机器人(四)

    目录 百度API tkinter界面设计 完整代码 实现结果如下: 百度API 这里聊天机器人的功能也是结合第一篇的语音识别([python]tkinter界面化+百度API-语音识别_张顺财的博客- ...

  2. 【python】tkinter界面化+百度API—人脸检测(三)

    目录 百度API tkinter界面设计. 完整代码 实现结果如下: 百度API 人脸检测也是调用百度API去实现的.所以我们需要在百度AI开放平台-全球领先的人工智能服务平台里去进行人脸检测与属性分 ...

  3. python通过tkinter界面库实现三角形成立的测试

    python通过tkinter界面库实现三角形成立的测试 from tkinter import * from tkinter import messagebox login = Tk() login ...

  4. 关于在python的tkinter界面中镶嵌mayplotlib动态图

    关于在python的tkinter界面中镶嵌mayplotlib动态图 很多的时候,我们需要给客户展示一些比较美观的界面,中间就必然需要一些精美的图表,让客户看起来更加的专业,因此,我们就需要tkin ...

  5. python GUI图形界面化编程——Tkinter

    一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读 GUI图形界面化编程 一.前言 一.GUI图形界面化编程 二.常用的GUI库 三.GUI 编程的核心步骤和第一个 GUI 程序 设置窗口的 ...

  6. Python 爬虫+tkinter界面 实现历史天气查询

    文章目录 一.实现效果 1. python代码 2. 运行效果 二.基本思路 1. 爬虫部分 2. tkinter界面 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法 ...

  7. Python 爬虫+tkinter界面 实现历史天气查询

    越长大我才越明白,前途,真的比什么都重要. 文章目录 一.实现效果 1. python代码 2. 运行效果 二.基本思路 1. 爬虫部分 2. tkinter界面 原文链接:https://yetin ...

  8. python之Tkinter界面创建

    一.导入tkinter模块 在安装Python的时候,已经安装好了tkinter这个模块,使用时只需导入. import tkinter from tkinter import * 二.界面创建 (一 ...

  9. Tkinter模块GUI界面化编程实战(六)——超级游戏盒子(含超详解及完整源码、完整程序免费下载链接)

    [上期回顾:Tkinter模块GUI界面化编程实战(五)--大鱼吃小鱼游戏] 这篇博客介绍了如何用Python Tkinter模块编写一个界面化的超级游戏盒子,在博客下面有完整的源码,源码中有详细的注 ...

最新文章

  1. 谷歌李飞飞:我们依旧站在人工智能研究的起点
  2. PowerDesigner与Rose详解教程
  3. WINCE6.0+S3C2443的启动过程---eboot1
  4. 多少秒算长镜头_下中国象棋,能算多少步才算高手?
  5. linux 函数学习--kzalloc()
  6. LAMP平台--部署Discuz论坛
  7. 反编译DLL并修改后再生成DLL
  8. 如何创建一个进度条控件
  9. matlab计算海洋浮力频率_MATLAB气象海洋简单粗暴教程(三十四)——MATLAB里画图的统计函数...
  10. LVS+Keepalived高可用
  11. altium Designer使用方法大总结
  12. 白盒测试---讲解(1)
  13. 语音情感识别常见的声学特征
  14. Python基础:异常处理
  15. 仓储模式和传统三层架构多数据库实现
  16. 草莓tv 无法播放_草莓:高质量的声音,开源音乐播放器
  17. Java 架构师眼中的 HTTP 协议
  18. 微信小程序iOS使用input输入时placeholder及输入内容消失或隐藏
  19. GNSS/INS组合导航学习-GINAV(一)
  20. easyexcel 读取指定行数据_Excel怎么设置只提取指定行中的数据?

热门文章

  1. CPU型号查询一览表
  2. Swift开发IOS-UISlider
  3. 微信小程序的授权登录功能
  4. C语言实现:输入一个数字判断其是否为素数
  5. Java 200道题
  6. 装修风格如何选?极家家居生活馆好吗?
  7. im即时通讯开发:群聊消息如此复杂,如何保证不丢不重
  8. Android 音视频开发(一) -- 使用AudioRecord 录制PCM(录音);AudioTrack播放音频
  9. Java数学表达式计算(中缀转后缀表达式)
  10. ubuntu更换conda源