基于Python的九宫格拼图游戏设计

目录
1 问题描述 2
2 需求分析 2
3 概要设计 2
3.1抽象数据类型 2
3.2 主要功能模块设计 3
3.3 关键算法 3
4 各功能模块实现 4
5 系统调试分析 5
6 测试结果 5
7 课程设计总结 17
8 分工…17
参考文献 17
附录:源码以及其它相关材料 19

1 问题描述
设计一个九宫格游戏;
要求:
1)包括界面,基本的控件,有文本框、选择框、按钮等。
2)用户信息:用户登录需要的账号和密码,新用户注册用到的信息;对玩家信息的记录、保存、读 取。
3)界面信息:图片,九宫格规格;
4)交互信息:控制游戏的移动;
2 需求分析
本演示程序是在IDLE环境中编写,实现九宫格游戏。
1)游戏界面设计:用户登录,进入游戏界面,有良好的功能可视化界面,有游戏规则介绍。例如有计时和分数的显示,游戏图片替换和打乱图片的按键,显示游戏界面的图像画面,游戏玩家开始游戏、悔一步,重新开始的按键。
2)原始图像的选择:游戏开始时,从准备好的图片中,选择想要拼的图片,要有不同难度的图片(可从相似度考虑);可选择重新开始;
3)随机打乱图像:选择难度(1,2,3),根据难度将图片分成33, 55,6*6的规格,设计算法,随机打乱生成肯定有成功结果的初始化状态九宫格,要求有动态的打乱图片的显示过程(若产生的初始化九宫格无法到达最终状态,应该有提示3秒后自动刷新,重新生成);
4)计时器的设计:动态显示玩家本局的时间,可选择限时挑战;
5)移动:用户可以拖动模块进行交换,直到拼出原图像。
①通过w, s, a, d(或者上,下,左,右)进行平移操作,动态的展示每一步移动的结果。如果操作违法,应不做该操作;
②能够刷新界面;
③游戏过程中,允许选择悔一步(不可后退多步,若用户悔步>1,给出提示且不执行多次后退操作)或者终止游戏(正常),继续下一步;
6)系统能自动检查到用户拼合出原图。
7)结束游戏:可以提前结束游戏,若成功结束游戏,总分=时间分数+移动正确率(正确数/移动步数)*100,将本场的游戏时间加入到游戏记录中,并按照排序显示之前游戏的时间和该用户信息。
8)上传分数以及获取排名,可以选择删除之前的成功记录,但是不可以用户随意增加记录。
9)不同用户存储的图像可以不同。

  # 登录界面
    def Login_Shell():
        global SCREENWIDTH, SCREENHEIGHT
        information_init()
        
        login_shell = Tk("登录")
        login_shell.title("登录")
        if SCREENWIDTH == SCREENHEIGHT == 0:
            SCREENWIDTH = login_shell.winfo_screenwidth()
            SCREENHEIGHT = login_shell.winfo_screenheight()
        login_shell.geometry("300x150+%d+%d"%((SCREENWIDTH-300)/2, (SCREENHEIGHT-150)/2))

        account_label = Label(login_shell, text = "账号:").place(x = 50, y = 30)
        account = Entry(login_shell)
        account.place(x = 100, y = 30)

        password_label = Label(login_shell, text = "密码:").place(x = 50, y = 70)
        password = Entry(login_shell)
        password.place(x = 100, y = 70)
    
        def login():
            global useraccount

            username = account.get()
            userpassword = password.get()

            information_read()
            
            if userpassword == userinformation.get(username, "0"):
                useraccount = username# 登录的用户
                showinfo(title="", message="登录成功!")
                login_shell.destroy()
                Menu_Shell()
            else:
                showinfo(title="登录失败", message="账号或密码错误!")
            
        login_button = Button(login_shell, text = "登录", command = login)
        login_button.place(x = 80, y = 110)
        log_to_reg_button = Button(login_shell, text = "暂无账号,先去注册", command = lambda: [login_shell.destroy(), Register_Shell()])
        log_to_reg_button.place(x = 175, y = 110)

        login_shell.mainloop()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值