• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 使用graphics.py实现2048小游戏

使用graphics.py实现2048小游戏

作者:hebedich 字体:[增加 减小] 来源:互联网

hebedich 通过本文主要向大家介绍了graphics.py,graphics.py下载,小py,py实现smb协议,英特尔 hd graphics等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1、过年的时候在手机上下载了2048玩了几天,心血来潮决定用py写一个,刚开始的时候想用QT实现,发现依赖有点大。正好看到graphics.py是基于tkinter做的封装就拿来练手,并借用了CSDN一位朋友封装的model.py(2048逻辑部分)
2、由于是练手的所以不免有写的不好的地方请大家喷的轻点。

先看看演示图片

附上源码:

2048主程

#-*-coding:utf-8-*-
#python3.3.5
from graphics import*
from tkinter.messagebox import askquestion
from tkinter.messagebox import showinfo     
import time,random,model,configparser
import GUI_2048 as g
class Application():
    '''
    初始化应用程序
    '''
    def __init__(self):
        self.matrix = model.init()
        self.win = g.init()
        self.create_r_2048(self.win)
        self.show_matrix(self.matrix)
        self.win.master.bind("<Key>", self.bind_key)
        while 1:
            update()
    '''
    创建网格上的16个方格、最佳成绩、当前分数
    '''
    def create_r_2048(self,win):
        p = Point(10, 190)
        n = 4
        self.rt =  [0 for row in range(n*n)]
        for i in range(n):
            for a in range(n):
                _p = Point(p.x + 60*i, p.y + 60*a)
                self.rt[i+4*a] = g.rectangle_2048(win,_p)
        #最佳成绩
        self.zjcj = g._text(win,Point(135, 60 + 30),Point(135 + 115, 60 + 30 + 30),self.getMaxScore())
        #当前分数
        self.dqjf = g._text(win,Point(135, 120 + 30),Point(135 + 115, 120 + 30 + 30),'0')
    '''
    从配置文件中获取最佳成绩
    '''    
    def getMaxScore(self):
        config = configparser.ConfigParser()
        config.read('config.ini') 
        maxScore = config.get("Score", "maxScore")
        return maxScore
    '''
    把最佳成绩写入配置文件
    '''
    def setMaxScore(self,score):
        config = configparser.ConfigParser()
        config.optionxform = str
        config.read('config.ini') 
        config.set("Score", "maxScore",str(score))
        config.write(open("config.ini", "w"))
    '''
    初始化数据和界面,在游戏结束后调用
    '''
    def my_init(self):
        maxScore = self.getMaxScore()
        if int(maxScore) < model.getScore():
            self.setMaxScore(model.getScore())
            self.zjcj.setText(model.getScore())
        matrix = model.init()
        self.dqjf.setText(model.getScore())
        return matrix
    '''
    绑定键盘事件 捕获上下左右和Q键
    '''  
    def bind_key(self, event):
        '''
        key event
        '''
        if model.is_over(self.matrix):
            if askquestion("GAME OVER","GAME OVER!\nDo you want to init it?") == 'yes':
                self.matrix = self.my_init()
                self.show_matrix(self.matrix)
                return
            else:
                self.win.close()
        else:
            if event.keysym.lower() == "q":
                self.win.close()
            elif event.keysym == "Left":
                self.matrix = model.move_left(self.matrix)
            elif event.keysym == "Right":
                self.matrix = model.move_right(self.matrix)
            elif event.keysym == "Up":
                self.matrix = model.move_up(self.matrix)
            elif event.keysym == "Down":
                self.matrix = model.move_down(self.matrix) 
            if event.keysym in ["q", "Left", "Right", "Up", "Down"]:
                try:
                    self.matrix = model.insert(self.matrix)
                    self.dqjf.setText(model.getScore())
                    self.show_matrix(self.matrix)
                except:
     &

您可能想查找下面的文章:

  • 使用graphics.py实现2048小游戏

相关文章

  • python实现简单购物商城
  • 从Python的源码浅要剖析Python的内存管理
  • python getopt详解及简单实例
  • Python使用reportlab将目录下所有的文本文件打印成pdf的方法
  • 浅析Python的web.py框架中url的设定方法
  • Python判断文本中消息重复次数的方法
  • Python 解析XML文件
  • python去掉行尾的换行符方法
  • Python守护进程和脚本单例运行详解
  • Python实现树莓派WiFi断线自动重连的实例代码

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python常用函数详解
    • Python 异常处理实例详解
    • Python学习笔记_数据排序方法
    • 使用python实现rsa算法代码
    • Python中的命令行参数解析工具之docopt详解
    • python调用cmd复制文件代码分享
    • Python和perl实现批量对目录下电子书文件重命名的代码分享
    • 详解Python中的元组与逻辑运算符
    • python条件变量之生产者与消费者操作实例分析
    • RC4文件加密的python实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有