呵呵,经过将近一个星期的对pygame的了解与熟悉,我终于磕磕绊绊地把数独的基础界面做出来啦。当然啦,完全不出意思的是,很丑,所有的东西都是自己一笔一画画出来的,没有对话框,没有菜单栏,更别提什么精美的画面了。不过我却因此更了解界面编程的实质了。再复杂的界面,底层应该也是这样子画出来的吧?就跟android里面的canvas那样。同时也了解到了一个概念,叫FPS,frame per second,就是说一秒钟里面对画面进行多少次重画。pygame程序的框架大概是这样:
pygame.init() #初始化pygame,为使用硬件做准备
clock = pygame.time.Clock()
#...
while True:
for event in pygame.event.get():
#各种事件处理,包括:
if event.type == QUIT:
#退出程序
elif event.type == KEYDOWN:
#处理键盘事件
elif event.type == MOUSEMOTION:
#鼠标移动
elif event.type == MOUSEBUTTONDOWN:
#按下鼠标
#各种重画界面:事件处理过程影响了数据的状态,
#重面界面的函数通过分析数据的状态来决定界面的呈现
#...
#重画的过程应该是发生在显卡的缓冲区里的
#直到update才真正发生在显示器上
pygame.display.update()
#就是在这里,我们设置了FPS,从而决定了屏幕的更新频率
#如果不设置的话,好像是默认一个循环更新一次
#也就是程序可能会浪费你的CPU
clock.tick(FPS)
关于pygame的学习,推荐大家一个很好的博客:http://eyehere.net/2011/python-pygame-novice-professional-index/,我所有用到的pygame的资料基本都是从这看到的。
虽然很丑,不过我还是决定让大家看看我丑丑的界面(这只是v0.1而已,别急着吐嘈哈~):
新游戏:
选中一个可选的格子后,输入列表中一些格子变成紫色,为合法输入
完成数独后的彩色画面:
使用到的元素包括:
Grid:即数独的里的小格子了。每个格都是一个Rect,同时记录了该格里填的数字(None, 1~9)以及当前状态下该格的合法输入,另外还有一个状态标记,说明了该格是空白还是填了数字,填的数字是自己填的,还是初始局面就有的,还是通过电脑解得到的;另外一些标记位说明了该格当前是否被选中,或是有鼠标停留在上面。
具体状态如下:
S_BLANK = 0 #空白
S_FILLED = 1 #初始局面就已经填了的
S_FOCUS = 2 #鼠标当前停留在该格上
S_SELECTED = 4 #选中当前格
S_ANSWER = 8 #用户填入
S_ANSWER_BY_COMP = 16 #通过solve得到的解
CellAns:即旁边那些用于点击输入到Grid中的格。除了该格代表的数字外,还用一个bool变量来说明该数字对于当前选中的Grid是否是合法输入。由此可见,只有在当前有选中的格子的情况下,这些CellAns才有事件响应。
CellMenu:即上面的那两个按钮。以后或许可以把事件响应也写到里面去。
别看这些现在都很丑,等以后用图片为背景美化一下,也是可以做到挺漂亮的。不过目前的核心还是应该在功能的实现上。
至于主函数,其实就是上面那个框架下的各种事件处理及画图。
现在实现的功能包括有:
(1)创建新游戏
(2)计时
(3)解当前数独
(4)判断数独是否已经完成
接下来的重点将是研究不同难度等级的数独的特征以及相应的产生算法。不过,,,下个星期要看论文了。。。。下下个星期再开始吧~!
- 大小: 73.4 KB
- 大小: 75.2 KB
- 大小: 89.4 KB
分享到:
相关推荐
react-native-smart-sortable-sudoku-grid, 一个智能可以排序的数独网格,用于响应原生应用程序 react-native-smart-sortable-sudoku-grid 一个智能可以排序的数独网格,用于响应原生应用程序。 用JS编写跨平台支持...
标题“ufo2mstar-SuDoku-Solver-archive-refs-heads-master.zip”指的是一个包含“ufo2mstar”项目中的Sudoku求解器源代码的归档文件,其版本对应于“refs/heads/master”分支。这个压缩包很可能包含了项目的主分支...
在本案例中,"Algorithm-Sudoku-Generator.zip"是一个压缩包,其中包含了一个C语言编写的数独生成器,它使用了改进的高效回溯算法来生成合法的数独谜题。 回溯法是一种试探性的解决问题的方法,当遇到死路时,会...
在这个名为`sudoku-solver-源码.rar`的压缩包中,我们主要关注的是`sudoku-solver-master`目录下的源代码,它包含了实现数独求解算法的详细实现。本文将深入探讨这个求解器的工作原理、主要算法以及可能涉及的数据...
sudoku-A.exe
js js_leetcode题解之37-sudoku-solver.js
在这个特定的项目中,我们看到的是一个名为"Unity独数游戏《sudoku-2017》"的个人开发作品。这款独数(Sudoku)游戏是用Unity 2017版本构建的,这意味着它利用了当时Unity提供的最新功能和技术。 独数是一种逻辑...
python库。资源全名:Trivial_Sudoku-2.0-py2-none-any.whl
Sudoku-九宫格-数独matlab代码,matlab需要嵌入凸优化CVX工具包
本项目“angular_sudoku-master”是基于 Angular 构建的一款数独游戏应用,展示了如何在 Angular 框架中实现一个交互式的娱乐应用。 **1. Angular 基础概念** - **模块(Module)**:Angular 应用是由一个或多个...
综上所述,"Sudoku-Unity-main(20019-2021)火影数独游戏(打包)"项目展示了Unity游戏开发的多个方面,包括引擎使用、编程、算法设计、UI开发、资源管理、错误处理和版本控制等关键知识点,是学习和研究Unity游戏...
Sudoku-Sudoku
Matlab实现的自动识别数独图片并求解的小型软件_sudoku-auto-recognize
在本文中,我们将深入探讨一个基于C语言实现的数独解算器项目——"Algorithm-Sudoku-Solver.zip"。这个项目不仅能够解决数独谜题,还能验证已填好的数独是否正确,并生成新的数独题目,充分展现了算法在解决复杂问题...
《构建跨平台数独应用:基于Kotlin的sudoku-android详解》 在现代移动和Web开发领域,跨平台解决方案越来越受到关注。一个优秀的例子就是`sudoku-android`项目,这是一个使用Kotlin多平台(Kotlin/JVM, Kotlin/JS, ...
标题中的“sudoku-verilog-C-master”暗示这是一个使用Verilog硬件描述语言实现的数独游戏项目,可能结合了C++编程。项目旨在在FPGA(Field-Programmable Gate Array)上实现数独游戏的解决方案。让我们深入探讨一下...
ABC-Sudoku-Solver.rar 是一个基于人工蜂群算法(Artificial Bee Colony, ABC)的数独求解器。这个程序的主要目标是利用这种优化算法来解决数独难题。数独是一种逻辑推理游戏,玩家需要根据九宫格内部分已填好的数字...
《火影数独游戏》基于Unity引擎开发,是一款结合了经典数独玩法与热门动漫《火影忍者》元素的休闲益智游戏。本项目涵盖了Unity游戏开发中的多个重要知识点,包括但不限于: 1. **Unity引擎基础**:Unity是跨平台的...
npm install --save @mattflow/sudoku-solver 或者 yarn add @mattflow/sudoku-solver 简单用法 接受一个字符串或由81个元素组成的数组,其中0表示一个空框。 返回包含已解决难题的字符串。 var solve = require...