资源简介
丧心病狂:用300行的python写个小游戏,思路简洁,代码明了,练手优选。
代码片段和文件信息
import random sys
import tkinter as tk
import tkinter.messagebox
from tkinter.messagebox import askyesno
from PIL import Image ImageTk
class MainWindow():
def __init__(self):
self.title = “连连看游戏“
self.windowWidth = 700
self.windowWidth = 700
self.windowHeigth = 500
self.root = tk.Tk()
self.root.title(self.title)
self.CWindow(self.windowWidth self.windowHeigth)
self.root.minsize(460 460)
self.pics = []
self.primary = askyesno(title=‘选择第一关‘ message=‘第一关(yes) 第二关(no)‘)
self.Interface()
if self.primary == False:
self.picsize = 10 # 每行每列的图片数量
self.num = 4
self.picWidth = 40 # 小图片的宽
self.picHeight = 40 # 小图片的宽
else:
self.picsize = 8 # 每行每列的图片数量
self.num = 4
self.picWidth = 50 # 小图片的宽
self.picHeight = 50 # 小图片的宽
self.picsKind = self.picsize * self.picsize / self.num # 小图片种类数量
self.picsmap = [] # 游戏地图
self.margin = 25
self.firstClick = True
self.start = False
self.lastPoint = None
self.none = -1
self.nolink = 0
self.linelink = 1
self.L_link = 2
self.U_link = 3
self.put_pic_in_pics()
self.root.mainloop()
def Interface(self):
self.menu = tk.Menu(self.root bg=“lightgrey“ fg=“black“)
self.list_menu = tk.Menu(self.menu tearoff=0 bg=“lightgrey“ fg=“black“)
self.list_menu.add_command(label=“开始游戏“ command=self.game_start accelerator=“Ctrl+N“)
self.list_menu.add_command(label=“退出“ command=self.game_stop accelerator=“Ctrl+M“)
self.menu.add_cascade(label=“游戏“ menu=self.list_menu)
self.root.configure(menu=self.menu)
self.canvas = tk.Canvas(self.root bg=‘white‘ width=450 height=450)
self.canvas.pack(side=tk.TOP pady=5)
self.canvas.bind(‘‘ self.clickCanvas)
def CWindow(self w h): # 设置屏幕的位置
swidth = self.root.winfo_screenwidth()
sheight = self.root.winfo_screenheight()
size = ‘%dx%d+%d+%d‘ % (w h (swidth - w) / 2 (sheight - h) / 2)
self.root.geometry(size)
def game_start(self):
self.ini_game()
self.put_pics_on_canvas()
self.start = True
def game_stop(self):
sys.exit()
def clickCanvas(self event):
if self.start:
point = self.get_index_coord(Point(event.x event.y)) # 返回鼠标点击的位置到底是哪一幅图片。例如[00]代表左上角第一幅
# 有效点击坐标
if point.isUserful() and not self.check_none(point):
if self.firstClick: # 如果是第一次点击图片,那么就画一个红框
self.draw_red_rectangle(point)
self.firstClick = False
self.lastPoint = point
else:
if self.lastPoint.isEqual(point): # 如果连续点击同一小图片两次的话,就将话得红框去掉
self.firstClick = True
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-08-26 16:24 连连看\
文件 82995 2019-08-26 16:24 连连看\img.png
文件 12749 2019-08-26 13:34 连连看\main.py
- 上一篇:python gui界面
- 下一篇:Python各种滤波器代码
相关资源
- python实现SGBM图像匹配算法
- python实现灰度直方图均衡化
- scrapy_qunar_one
- Python学习全系列教程永久可用
- python简明教程.chm
- 抽奖大转盘python的图形化界面
- 双边滤波器实验报告及代码python
- python +MYSQL+HTML实现21蛋糕网上商城
- Python-直播答题助手自动检测出题搜索
- OpenCV入门教程+OpenCV官方教程中文版
- Python 串口工具源码+.exe文件
- Python开发的全栈股票系统.zip
- Python操作Excel表格并将其中部分数据写
- python书籍 PDF
- 利用python绘制散点图
- python+labview+No1.vi
- 老男孩python项目实战
- python源码制作whl文件.rar
- python3.5可用的scipy
- PYTHON3 经典50案例.pptx
- 计算机科学导论-python.pdf
- python模拟鼠标点击屏幕
- windows鼠标自动点击py脚本
- 鱼c小甲鱼零基础学python全套课后题和
- Python 练习题100道
- Practical Programming 2nd Edition
- wxPython Application Development Cookbook
- python 3.6
- Python 3.5.2 中文文档 互联网唯一CHM版本
- python3.5.2.chm官方文档
评论
共有 条评论