第一步:确定所需要实现的目标
1.数独程序的界面:
1.1初始界面边框
1.1.1边框上的Sodoku标题
1.2初始界面背景图片
1.3初始界面开始键
1.4初始界面难度设置
\\数独界面始终为9×9的矩阵,可以通过改变初始给定格数来改变难度
1.5响应键盘和鼠标指令
1.5.1鼠标响应开始键、难度设置
1.5.2键盘响应推出程序(可设置为Q键)
2.开始数独游戏:
2.1产生9×9的格子(9×9的矩形)
2.2给定随机格子的初始值
2.2.1设置一个二维数组,其中元素为集合,对应每一个格子可填入的数字
\\通过设置集合初值为1~9,然后计算与行,列,自己3×3格子内的差集
2.2.2每次随机选一个格子并随机选择差集中数值为初始值,并更新本身差集的元素
2.2.3将数字的图片(?)放在矩形上表示改变数值
2.3改变每个格子的数值
2.3.1响应鼠标选定这个格子
2.3.2响应键盘输入数字
2.4提示系统
2.4.1遍历二维数组中元素个数,将个数最少的那个返回
3.结束系统
3.1.1每次选完数字,进行判断:当二维数组中集合均为空集时,代表游戏结束
第二步:各个步骤实现可以用到的方法/库
1.import sys
1.1sys.exit()函数用于结束这个程序
2.import pygame
2.1screen=pygame.display.set_mode((a,b)) \\创建一个a,b长宽的窗口,一般用变量screen存储起来
2.2pygame.display.set_caption \\创建窗口的标题
2.3pygame.init() \\进行使用pygame前各方面的初始化
2.4pygame.event.get() \\用于捕捉各种事件。例如鼠标的点击、键盘按键的按下、松开或者QUIT退出程序事件。一般写为for event in pygame.event.get() 后面加上if event.type==...
2.5pygame.display.update()\\用于刷新窗体
2.6image=pygame.image.load("\\图片路径") \\加载一个surface对象(即图片),一般用变量存储起来
2.7image.get_rect() \\这里的image是2.6存储的surface对象,此函数以图形大小获得一个矩形,相当于图片的边框,它拥有top,bottom,left,right,height,width表示上下左右宽度长度等多个参数,之后可以根据这个矩形边框进行一些操作。在这个窗口中,可以这么认为,以左上角为坐标原点,向右伸展出x轴,向下伸展出轴,这些参数就是表示在这个笛卡尔坐标系中。
2.8screen.fill(颜色)\\这里的screen即上面set_mode获得的窗口,这个函数用于填充背景颜色
2.9screen.blit(image,image.get_rect())\\这个函数用于根据rect对象的移动改变image的位置(绘制) 在2.8\2.9函数之后加入2.5的pygame.display.update()
2.10clock=pygame.time.Clock()创建一个Clock对象,其中含有方法clock.tick(fps)用于控制每秒变化的帧数 //数独应该不会用到
2.11event.type==pygame.KEYDOWN 这个判断可以用于检测键盘是否按下(一般在下面还会增加内联if event.key==pygame.K_RIGHT等等)
2.12pygame.display.set_mode中还可以指定参数,变为无边框窗口、可调节大小的窗口或全屏显示模式。
2.13vInfo=pygame.display.Info() \\这个函数可以用来获取当前该窗口的大小,以便于在2.12中改变窗口大小时,使得图像正常显示出来。(屏幕参数可以通过vInfo.current_w和vInfo.current_h来获得当前屏幕的宽度和高度)
2.14event.type==pygame.VEDIORISIZE 可以侦测屏幕伸缩的事件。这里列出pygame可以实现的事件类型。
2.15pygame.draw.rect(Surface,color,Rect,width=0) //绘制一个矩形 当然也可以绘制一些其他的图形
2.16pygame.Rect //创建一个Rect矩形类,可以获得它的各种参数。如这个矩形内的某个坐标。
2.17pygame.Font类 用于绘制字在屏幕上