Outline Of Sodoku

第一步:确定所需要实现的目标

        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类 用于绘制字在屏幕上

 

 

                

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值