• 大小: 85KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-12
  • 语言: Python
  • 标签: pytho    

资源简介

丧心病狂:用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

评论

共有 条评论