基于Python的数独游戏系统的研究与设计.docx
- 文档编号:1934686
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:32
- 大小:1.15MB
基于Python的数独游戏系统的研究与设计.docx
《基于Python的数独游戏系统的研究与设计.docx》由会员分享,可在线阅读,更多相关《基于Python的数独游戏系统的研究与设计.docx(32页珍藏版)》请在冰豆网上搜索。
基于Python的数独游戏系统的研究与设计
基于Python的数独游戏系统的设计与研究
基于Python的数独游戏系统的研究与设计
摘要
当今世界,人们的精神需要越来越多,各种益智类游戏资源大量出现,受到大众的广泛喜爱。
其中数独游戏大受欢迎,主要原因是它不需要丰富的知识,能被初学者迅速接受。
数独不但有趣,并且能够锻炼游戏者的推理与逻辑能力,很多教育者都一致认为数独是对大脑开发的绝佳形式。
本文是以python为基础,利用回溯法实现数独的破解,以python相关的游戏开发框架实现游戏界面的显示,以及其它相关语法实现数独库的生成,得到一个基于python的数独游戏系统。
关键词:
数独游戏回溯法python
ResearchanddesignofSudokugamesystembasedonPython
Abstract
Intoday'sworld,withthegrowingspiritualneedsofthepeople,avarietyofpuzzlegameresourceshaveappearedinlargenumbersandarewidelylovedbythepublic.OneofthemostpopularSudokugamesisthatitdoesnotrequireextensiveknowledgeandcanbequicklyacceptedbybeginners.Sudokuisnotonlyfun,butalsocantrainthereasoningandlogicalskillsoftheplayers.ManyeducatorsbelievethatSudokuisagreatwaytotrainyourmind.Thisarticleisbasedonpython,usingthebacktrackingmethodtoachievesudokucracking,usingpython-relatedgamedevelopmentframeworktodisplaythegameinterface,andotherrelatedgrammarstoachievethesudokulibrarygeneration,toobtainapython-basedsudokugamesystem.
Keywords:
SudokugameBacktrackingPython
1前言
1.1本设计的目的和意义
随着现代科学技术的飞速发展和计算机技术的进步以及游戏开发的普及,数独游戏已经以手机和电脑游戏的方式呈现在人们面前,不需要笔和纸也能完成一局数独游戏。
由于数独的入门门槛低,却又能锻炼人们的逻辑与思维能力,深受广大游戏爱好者的喜爱。
在中国,有许多城市的许多所中小学将数独作为一门课程引进课堂。
其魅力不仅局限于此,许多国家都以数独为主题举办过相关比赛。
1.2系统概述
本课题从了解数独的背景开始,介绍了数独游戏的发展过程、基本原理以及简述破解其所用的基本方法,在此基础上,运用Python语言进行数独游戏系统的设计与实现,通过设置数组、约束条件进行递归求解。
1.3系统功能结构
本数独游戏有三个难度:
简单,一般,困难。
每个难度有十关,用户对关卡可以选择,但每一关重新开始之后会出现不同的数度棋盘,可以让用户在同一难度体验不同数独;在游戏的进行界面有计时,来记录玩家的游戏所用时间;玩家可以修改任意一个填过的数字,可以重新开始和显示答案,但提交错误次数不能超过5次,超过5次错误则结束游戏。
游戏进行时可以随时暂停、继续、返回主页。
1.4开发技术简介
本文首先介绍数独游戏及其求解方法,详细介绍了回溯算法的定义及其原理,通过python进行了回溯算法求解的实现,最后进行了游戏测试,并且通过测试,系统能够快速的进行求解,值得推广。
与其它语言相比,Python语言具有很好的可扩展性,语法简洁,可以应用的领域非常广泛。
近几年,Python的发展速度非常之快,许多大学开始引入Python程序设计课程,许多公司也逐渐转为以Python语言进行开发。
2数独游戏简介
本文章的大体思路为:
首先介绍数独的背景、意义、游戏规则以及一般解法,其次介绍Python相关的知识,两项进行结合,在Python的基础上实现数独游戏,最后进行测试,确保功能可行。
2.1数独游戏的背景及意义
2.1.1数独游戏背景
数独游戏的前身名叫拉丁方阵(LatinSquare),是18世纪初的瑞士数学家欧拉以及其他数学家研讨出来的。
19世纪末,美国的一位建筑师根据拉丁方阵发明了一种填数游戏,便形成了数独的初始模样。
20世纪,在一本益智杂志上发现了这个游戏,随后,被日本学者引进日本,发表在游戏杂志上,并给它重新起了名字,为“sudoku”,也就是现在的数独。
数独在其发展历程中,热度只增不减。
国内许多中小学都将其引进课堂,世界各地也举办过许多“数独”主题的比赛。
2.1.2数独游戏的意义
与其它相似游戏不同,数独的入门简单,不需要大量知识,能被大多数初学者接受。
数独游戏好玩有趣,可以锻炼玩家的推理逻辑能力。
数独游戏很全面的考验了玩家的观察能力和推理能力,虽然规则简单,但不缺变化,数字排列变化多样,正是因为这样,不少教育者认为数独是一个很好的锻炼头脑的方式。
2.2数独游戏的规则、求解方法以及设计
2.2.1数独游戏规则和求解方法
游戏规则:
数独分为九个宫(如图2.1所示),每个宫又分为了9个格(如图2.2所示),总共为81个格子。
玩家需要根据这81个格子中一定的已知数字和解题的规则,利用逻辑和推理,在空白的格子里填写1-9中的任意数字,保证每行、每列、每一宫都出现1-9的所有数字,但每行、每列、每宫出现的数字不能重复。
图2.1数独九宫图
图2.2数独每一宫的格数
数独游戏在最开始出现的有空格的状态称为数独初盘(如图2.3所示);当成功破解游戏之后得到的数独则称为终盘(如图2.4所示)。
数独游戏有初盘必有终盘,若一个初盘有多个终盘,游戏的质量就会降低,因此唯一终盘解的初盘生成是数独游戏待解决的两个问题[1]。
图2.3数独初盘
图2.4数独终盘
数独的求解方法多种多样,例如摒除法、余数法等。
面对使用电脑来计算数独的常用算法有递归算法、候选数回溯法、枚举法、遗传算法、方程求解等[2]。
本设计主要采用回溯法来解决数独问题。
2.2.2数独游戏设计
(1)界面规划
数独游戏分为五个界面,分别为首页、难度选择、关卡选择、游戏界面和游戏结算画面。
游戏首页有开始游戏和退出两个按钮控制游戏的开始和退出,如图2.5所示。
图2.5游戏首页
难度选择界面有三个选项,分别为简单、一般、困难,玩家可以选择自己所要进行游戏的难度,如图2.6所示。
图2.6难度选择界面
每个难度的关卡选择界面有十个关卡,每个关卡是对所选难度的细划分,如图2.7所示。
图2.7关卡选择界面
游戏进行界面由一个9*9的棋盘,一个计时器,暂停、重新开始、提交、返回、答案五个按钮组成。
棋盘用于显示已知的数字以及获取玩家输入的数字,计时器用来记录玩家游戏所用时间,按钮用于控制游戏进行与停止,在停止的过程中,棋盘会隐藏,防止玩家作弊。
游戏进行时的界面和暂停时的界面具体如图2.8和图2.9所示。
图2.8游戏进行界面
图2.9游戏暂停界面
游戏结算画面分为两种,一种是过关界面,一种是失败界面。
当玩家成功破解数独,则过关,会显示“YouWin”,可以选择进行下一关卡;当玩家破解数独失败时,则显示“Youlose”,可以选择重新开始。
具体如图2.10和2.11所示。
图2.10胜利界面
2.11失败界面
(2)难度划分
游戏的难度,是依据空格数在整个棋盘中所占比重划分的[3]。
当棋盘空格数越多,该数独的游戏难度则越大。
简单难度的关卡中,空格的数量由10逐渐增加至20。
破解简单难度的第一关所用时间基本在50s左右,随着难度的增大(空格数的增多),通过关卡的时间会逐步增加,但也不会花费太长时间,最后一关的通关时间在200s左右。
前部分简单难度关卡中的空格分布较分散,不会有很多连续空格,根据排除法,很快就能完成数独。
后面的关卡会出现3-4个的连续空格(如图2.12所示),需要玩家寻找单独空格或空格连续少的地方下手。
图2.12简单难度分析
一般难度的关卡中,空格的数量由20逐渐增加至30。
破解一般难度的第一关所用时间在210s左右,与简单的最后一关进行衔接,不会突然过难。
由于空格数量增多,空格的分布会出现小区域的连续空格,或者一行(列)只有3-4个已知数(如图2.13所示),这给解数独的过程增加了难度,这时玩家就需要寻找新的突破口。
图2.13一般难度分析
困难难度的关卡中,空格的数量由30逐渐增加至40。
难度相比前面的简单和一般难度要大很多,这时就需要玩家拥有一些技巧来破解数独。
破解简单难度的第一关的时间大概在420s左右,关卡中会出现3*3矩阵中大面积空格和一行(列)连续空格的组合形式(如图2.14所示),会发现两行排除到最后的可选答案一模一样,这时就需要根据其它的数字来推理该空格所应该填的数字。
图2.14困难难度分析
2.3本章小结
本章主要介绍了数独从发明起初到现代的发展背景以及其重要的意义,对数独游戏的具体规则、求解方法以及难度划分做了详细介绍。
根据数独游戏的原始规则,对所开发的数独游戏进行设计,并给出界面设计图,为文章后续做出铺垫。
3应用的主要技术
本文基于Python开发平台,在windows环境下开发,分别运用了Python语言中的pygame框架、json模块、time模块等,以下对其进行详细介绍,
3.1Python介绍
Python是一种程序设计语言,纯粹是面向对象的动态语言,最初是用于创建自动化脚本的,随着版本的更新和新功能的增加,逐渐用于独立的大型项目的开发。
Python具有简洁易读、可扩展的特性,受到很多开发者的欢迎。
国外的名牌大学也采用python进行程序设计课程,例如,卡耐基梅隆大学、麻省理工学院。
但也因其纯粹的面向对象,在学习时会遇到两方面困难:
一方面,class和type的本质完全相同,类即为型,型亦为类[4];另一方面,型也是可以在程序中操作的对象[4]。
这两方面会造成混淆。
Python的语法限制性非常强,比如常见的但又极其重要的缩进规则,若编写代码者编程习惯不好,就会无法通过编译。
也正是因为这项规则,Python对开发人员的限制很强,学习初期会有不适应的现象,但也正因为这种强制,使得python的代码会清晰很多,更适合团队合作,能更好的适应社会化编程[5]。
Python与其它语言相比,在很多方面都有着相对的优势。
首先,Python是完全免费的,任何人都可以在自己的计算机上免费安装。
其次,Python非常易学、严谨,能让编写人员编写出的代码更加的容易读懂、更加方便维护。
最后,Python有非常丰富的扩展库,可以使各项任务轻松完成,开发者开发完整程序的各种需要都可以满足。
Python在国外有着相当广泛且重要的作用,比如Google的核心搜索引擎是由python实现的;全球最大的游戏公司EVE-online可以同时让10000个玩家在同一个程序中成为可能,这一举措就是靠python实现的[6];迪斯尼乐园还有用python制作动画等[6]。
3.2Pygame框架
本课题运用的主要框架即为Pygam
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Python 游戏 系统 研究 设计