(深信息)用python实现贪吃蛇小游戏毕业设计报告

(深信息)用python实现贪吃蛇小游戏毕业设计报告
(深信息)用python实现贪吃蛇小游戏毕业设计报告

深圳信息职业技术学院

计算机学院

毕业设计报告

题目:用python实现贪吃蛇小游戏

学生姓名:

学号:

专业班级:

指导教师:

2020年5月27日

摘要:

如今,生活的步伐加快,工作、学习和生活的复杂性使得人们的生活干涸,没有新的思想,休息时间减少。面对这种生活,人们希望找到娱乐活动,使他们能够在一段时间内身体和精神上放松。给他们的休息时间“贪吃蛇”这款游戏已进入公众视野。这次毕业设计的主题便是“贪吃蛇”的设计。游戏的主要内容分为两部分:游戏界面设计和游戏功能设计。基于原始蛇游戏的基本功能,该游戏的功能设计增添了一些其它功能。本次毕业设计所使用的开发语言是python,它有丰富的函数库和模块库,该设计主要使用Pygame模块。

关键词:贪吃蛇;游戏; Python ;函数库; pygame

目录

摘要: (2)

一、概述 (4)

(一)中国游戏产业的现状 (4)

(二)贪吃蛇游戏的发展状况 (4)

(三)开发工具的简介 (5)

1.Python3.8 & PyCharm简介 (5)

2.Python 3.8开发过程 (5)

二、需求分析 (6)

(一)可行性分析 (6)

1.技术可行性 (6)

2.经济可行性 (6)

3.运行可行性 (6)

(二)功能性分析 (6)

1.简单性 (6)

2.趣味性 (7)

三、设计展示 (8)

(一)功能介绍 (8)

(二)框架设计图 (8)

(三)画面展示 (8)

(一).开始 (8)

(二)运行 (9)

(三)游戏结束 (9)

四、详细设计 (10)

(一)主要函数及模块 (10)

1.主要模块 (10)

2.主要函数 (10)

(二)主要功能 (10)

1.关于贪吃蛇 (11)

2.关于食物 (12)

五、心得体会 (13)

致谢 (14)

参考文献 (15)

附录一 (16)

蛇的绘制 (16)

蛇的移动 (16)

判断蛇是否死亡 (16)

蛇是否吃到食物 (17)

食物随机出现 (17)

画出食物 (17)

一、概述

近年来,“游戏”像雨后春笋般出现。有些“游戏”幸存下来,显得与众不同。有些“游戏”耗尽了精力,藏在灰尘中。但是,不管玩什么“游戏”,都会给人带来欢乐。在工作和学习之余,大多数人会选择使用“游戏”来放松和消除疲劳;在闲暇时间亦会使用游戏来打发时间。当然阅读和旅游同样是人们的娱乐方式,但随着社会发展的加速,这些传统的娱乐方式不再适合人们的娱乐需求,“游戏”便理所当然的进入人们的视野。可以说,“游戏”已经成为生活的一个不可或缺的组成部分,它为生活带来了许多快乐和满足。

“贪吃蛇”是许多年轻人,甚至是青少年的出发点,现在受到各阶层人民的赞赏和追捧。

(一)中国游戏产业的现状

由于中国拥有庞大的人口基数和较大产业自由,再加上中国的市场开放度高,因此游戏产业在中国的市场上取得了令人瞩目的发展成果。根据中国产业信息网发布的《2019年中国游戏行业发展现状及未来发展趋势分析》指出,社会对游戏娱乐消费支出不断增加,有效带动了游戏娱乐行业和游戏实体产品行业的快速发展。

通过数据来看, 2019年,移动游戏市场实际销售收入1581.1亿元,占比68.5%;客户端游戏市场实际收入615.1亿元,占比26.6%;网页游戏市场实际销售收入98.7亿元,占比4.3%;移动游戏收入占据游戏市场主要份额。

2019年,中国移动游戏市场实际销售收入增速有所上升。移动设备由于易于携带等便利成为休闲的首选,并且随着5G及云游戏的发展,移动游戏面临更为稳定的市场上升空间。2019年,中国移动游戏市场实际销售收入达到1581.1亿元,同比2018年增长241.5亿元,同比增长率18.0%。

2019年,中国移动游戏用户规模达到6.2亿人,在固定人口空间下,使用移动设备的游戏用户基本处于饱和,较2018年增加0.2亿人,增速有所放缓,同比增长率3.2%。

(二)贪吃蛇游戏的发展状况

1997年,诺基亚工程师Taneli Armanto为诺基亚N6610手机编写了一个名为Snake的程序,中译贪吃蛇

后来,在更著名的诺基亚3310和其他型号上,安装了改进版本的Snake II。

2000年,诺基亚重写了Snake EX程序,并将其安装在同年发布的诺基亚9200上。

在过去的十年中,贪吃蛇游戏以各种形式出现在主大游戏平台上,它们具有新颖的设计和无穷无尽的信息流,吸引了数亿游戏爱好者前来玩。

2016年,《贪吃蛇大作战》诞生并广受欢迎。同年,腾讯游戏推出了下载量很高的在线游戏“疯狂蛇”。所有这些使“贪吃蛇”成为国内外游戏史上最广泛的作品之一。

(三)开发工具的简介

1.Python3.8 & PyCharm简介

本次毕业设计中,开发平台为windows10(64bit),语言使用为Python,版本为3.8.

Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。

PyCharm是一个Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

2.Python

3.8开发过程

Python是一种解释型语言。它不需要像C或C++等被编译成二进制码,它可以直接从源代码执行程序。当执行Python文件程序时,文件源代码首先编译为字节代码。然后发送到Python字节代码虚拟机解释这些字节代码,最后,Python 执行并导出结果。

二、需求分析

(一)可行性分析

可行性分析,也称可行性研究,是在对新系统进行系统研究的基础上衍生的。从经济和技术以及运行等方面研究了新系统的必要性和可能性:通过调查、分析和比较,成功地确保新系统。可行性研究的目的是确定问题是否能够以最快的成本得到解决。

该系统的可行性分析包括以下三个方面。

1.技术可行性

此次设计的贪吃蛇游戏使用Python语言作为该系统的主要开发工具,并使用丰富的库函数以及pygame,random和其他Python语言模块来完成构建地图过程。它具有高级和低级语言的优点,并且是一种面向对象的编程语言。它保证了模块化代码要求,并且模块化代码的改进对于新系统的将来扩展和修改非常有益。简而言之,在现有技术和材料条件下该系统的设计和开发符合要求,因此该系统在技术上是可行的。

2.经济可行性

该系统本质是一个小型自主游戏。对软硬件所需的条件较少,可以在个人电脑上完成,因此该系统在经济上可行。

3.运行可行性

该系统本质是一个小型自主游戏,所消耗的资源非常少,数年前所生产的硬件性能较低的电脑上也能满足编写和运行的基本条件,因此,这个系统在运行上是可行。

(二)功能性分析

游戏是人们生活中不可或缺的一部分。在人们成长的过程中,游戏常常伴随着我们,并在我们的生活中占据不可动摇的地位。无论是玩具还是可以与朋友一起玩的小游戏,它都能带给我们美好的回忆。因此,无论哪种类型的游戏,只要能满足人们的一些美好需求,它的市场就会非常好。

1.简单性

贪吃蛇是款十分简单的小游戏,无须复杂的学习就能够知道如何游玩。同时,所占用的运算资源少,容易在各大游戏平台上安装便于流传。对于那些整日忙于工作的人来说,他们显然不能花很多时间在大型游戏上,但是小型游戏就可以满足他们的娱乐需求,并且随着游戏进程的加快,对游戏的刺激也越来越强。您

可以说这个游戏的优势不仅简单易学,而且可以正确快速地运行。但是它的缺点主要是由于其简单性。游戏本身太简单了,无法与大型游戏的丰富性和乐趣相提并论,但是这款小游戏的主要目的是为需要小玩意来协调生活的人们带来更多的乐趣。

2.趣味性

当人们开始玩这个游戏时,蛇的身体最初比较duan4,运动空间也比较大,但是随着蛇不断地进食,身体会缓慢生长,活动空间越来越小,您无法触摸墙壁,障碍物和身体,这自然会增加游戏的操作性,同时在吃东西后会显示分数,吸引人们追逐分数。

三、设计展示

(一)功能介绍

主要是在屏幕区域绘制一条小蛇,且在蛇不重合的区域随机出现食物,通过上下左右键来操纵蛇去吃到食物,当吃到食物后蛇会增长一节,同时在其他区域在刷新新的食物。倘若在吃食物的过程中蛇碰到边界或撞到自己的身体,则游戏结束。

(二)框架设计图

通过对贪吃蛇的需求分析和功能设计,我们设计出游戏框架图如下图所示:

(三)画面展示

(一).开始

打开“snake”文件中的main.py文件(可直接双击运行或使用Pycharm打开再点Run运行),生成开始界面。在界面设计中还添加了开始界面和结束界面。开始会显示一张可自定义的图片,以及显示“按任意键开始”的字体,游戏结束后同样会弹出可定义的图片。

(二)运行

点任意按键进入游戏界面,按上下左右键控制蛇移动,蛇会从左边出现且自动向右方前进,此时若吃到食物便会在右上角得分处增加1分游戏的界面构造主要包括游戏运行界面尺寸的定义,背景幕布的覆盖;

(三)游戏结束

若不小心碰到边界,碰到蛇的身体,发生以上两种情况其中之一便会结束游戏,出现结束界面,此时按除Q键或者ESC键外,任意按键可重新游戏,否则便会结束游戏关闭程序。

四、详细设计

(一)主要函数及模块

1.主要模块

2.主要函数

(二)主要功能

注:各功能的主要代码请查看附录一

1.关于贪吃蛇

(1).蛇的绘制

这里采用一个元组存储贪吃蛇身体各个部分的坐标(一条贪吃蛇不是由很多节组成的嘛)。

最后获取相应坐标然后调用 pygame.draw.rect()画出身体的各个部分(2).蛇的移动

监听键盘,玩家按下键盘只是改变direction的值,再用move_snake()函数更新贪吃蛇坐标。如果不按,那direction值一直不变,贪吃蛇就一直向前走。

在这过程中贪吃蛇必须从蛇的头部开始移动,所以蛇不能反方向移动,也就是尾巴不能变成蛇头。如果你不按任何键,蛇就会以当前的方向向前移动。当玩家按下有效的箭头键时,蛇头按指定的方向移动,一次移动身体一部分。我们利用监听键盘,根据用户按键,用direction变量记录移动方向。然后更新贪吃蛇元组里面的坐标(其实每次移动只用更新头尾就行)。最后统一画出来。移动做法具体是,我们把每次头部移动的新坐标插入贪吃蛇元组,然后删掉尾部一节(在没有吃到食物的情况下!)

(3).贪吃蛇相关判断

①判断蛇是否死亡

“蛇”的死亡需要满足两个条件:1.蛇与身体碰撞2. 蛇与墙壁碰撞。

当“蛇”的头部坐标等于蛇身体的任意坐标时,便满足“蛇”死亡条件,蛇与身体碰撞。

当“蛇”的头部坐标超出的地图坐标时,便满足“蛇”死亡条件,蛇与墙壁碰撞。

②蛇吃到食物

当“蛇”头部坐标等于食物坐标,那么吃到食物。这时候注意,不需要删尾部一节了,因为吃到食物变长了,如果没有吃到食物,那么是正常移动,删掉尾部一节坐标。

2.关于食物

(1)食物随机出现

比较简单只使用到random模块,将x和y都设定成random,以及限定随机数起始在地图的坐标内,防止超出地图玩家看不见。

(2)画出食物

采用一个元组将食物出现的位置记录下来,之后再获取位置,调用pygame.draw.rect()画出来即可。

五、心得体会

毕业设计是对学生进行知识利用培训的一个重要组成部分,从发现问题到分析问题,解决问题以及实践培训方面,这是一个具体的考试和实践技能培训过程。随着社会科学和技术的迅速发展,计算机在生活的各个方面都被使用。“Python”是近年来最先进的编程语言之一,被排在2017年IEEE编程语言排名的前列,被列为最受欢迎的语言之一。有了良好的发展前景,认真研究蟒蛇和完成学业计划是非常重要的。

回顾这次设计毕业设计的过程,我仍然非常感动。实际上,从一开始,我就决定完成该课程,从理论概念到实际完成,我在4个月内学到了很多东西,不仅巩固了我以前学过,同时也学到了很多新知识。我已经掌握了一种新的编程语言,加深了对模块化编程思想的理解,对Python函数库有了更全面的了解,对函数调用有了更深刻的理解。这些都是我得益于此次毕业设计结束所取得的成就。我相信这些知识将使我现在和将来受益。

在这个毕业设计中,虽然我学到了很多知识,得到了很好的实践练习,但也遇到了很多问题。毕竟,这是我第一次进行毕业设计。 Python语言也是一种新的编程语言,我之前仅接触过C语言。在此过程中遇到一种或多种困难是正常的。从开始在互联网上查找Python教程,在库中查找与Python相关的材料以学习Python,到程序的编写开始,最后的测试以发现错误,在中间很多次,程序是各种各样的我想放弃所有的错误,但是由于种种压力,我终于坚持了下来,终于匆匆完成了。

贪婪的蛇游戏是一个简单的游戏,但是对于像我这样的初学者来说,它充满了困难。我记得当我刚决定这个科目时,老师提醒我我的科目太简单了。我应该如何写毕业论文,最后与导师讨论之后,我决定使用原始贪婪蛇的基本功能。但是对我来说依然是份困难的挑战。幸运的是,皇天不负有心人,最终自己完成了该程序。在两个半月内,这200行代码,这是我给这个毕业设计项目的所交出的答卷。

致谢

从最初选择主题到收集相关材料以及学习Python语言,用了两个半月的时间。从开题报告,初步程序设计,中期检查,提交论文的初稿到最终稿,这一步已经很多了。坚持不懈,学到很多东西,思考了很多,心情从简单变成了复杂,然后又从复杂中脱颖而出...但是随着毕业论文的完成,我的内心充满了成就感实在令人难以置信,让我感到所有这些努力都是值得的。

在写这篇谢谢的时候,我想了很多。从选题的开始到开题报告,再到毕业论文的撰写,我都想到了我的导师蔡剑宁,蔡老师给了我很多建议和帮助,并且我被程序错误折磨了很多次。当我不想继续学习时,蔡老师经常时机恰到好处的给与我提醒和警示。在此,我要对宋炯老师表示衷心的感谢。

刚开始,我对Python语言了解不多。后来,我找到了小甲鱼老师。他的视频教学使我有机会从零开始学习Python。在他的逐步指导下,我对Python的理解越来越深入,最后编写了程序。因此,我想对在屏幕上教我的老师说“谢谢”。感谢您在CSDN博客和博客园中提供的巨大帮助。当我遇到各种我无法用自己的能力解决的问题时,正是你们,略显幼稚的提问下耐心地向我一一解释。

在论文即将结束时,我的情绪不再平静。我想说的是,有了你们的帮助,论文和程序才能顺利完成。在此,我向你们表示最诚挚的谢意!

参考文献

[1] 嵩天, 礼欣, 黄天羽. Python 语言程序设计基础 [M] . 北京:高等教育出版社, 2017.

[2] 小甲鱼. 零基础入门学习 Python[M] . 北京:清华大学出版社, 2016.

[3] 新华网. 2019年中国游戏行业发展报告 [R] . 北京:新华网, 2019.

[4] (乌拉圭) Fernando, Doglio 著, 陶俊杰, 陈小莉译. Python 性能分析与优化 [M] . 北京:人民邮电出版社, 2016.

[5] MarkLutz 著, 侯荣涛译. Python 袖珍指南 [M] . 北京:中国电力出版社, 2015.

[6] 杨年华. Python 程序设计教程 [M] . 北京:清华大学出版社, 2017.

[7] ( 美 )Al Sweigart 著, 李强译. Python 游戏编程快速上手 [M] . 北京:人民邮电出版社, 2017.

[8] (美) JonathanS . Harbour 著, 李强译. Python 游戏编程入门 [M] . 北京:人民邮电出版社, 2015.

[9] 唐姜明. 基于 C 语言的贪吃蛇游戏开发与设计 [D] . 南京:南京工程学院, 2014.

附录一

蛇的绘制

#将贪吃蛇画出来

def draw_snake(screen, snake_coords):

for coord in snake_coords:

x = coord['x'] * cell_size

y = coord['y'] * cell_size

wormSegmentRect = pygame.Rect(x, y, cell_size, cell_size)

pygame.draw.rect(screen, dark_blue, wormSegmentRect)

wormInnerSegmentRect = pygame.Rect( #蛇身子里面的第二层亮绿色

x + 4, y + 4, cell_size - 8, cell_size - 8)

pygame.draw.rect(screen, blue, wormInnerSegmentRect)

蛇的移动

#移动贪吃蛇

def move_snake(direction, snake_coords):

if direction == UP:

newHead = {'x': snake_coords[HEAD]['x'], 'y':

snake_coords[HEAD]['y'] - 1}

elif direction == DOWN:

newHead = {'x': snake_coords[HEAD]['x'], 'y':

snake_coords[HEAD]['y'] + 1}

elif direction == LEFT:

newHead = {'x': snake_coords[HEAD]['x'] - 1, 'y':

snake_coords[HEAD]['y']}

elif direction == RIGHT:

newHead = {'x': snake_coords[HEAD]['x'] + 1, 'y':

snake_coords[HEAD]['y']}

snake_coords.insert(0, newHead)

判断蛇是否死亡

def snake_is_alive(snake_coords):

tag = True

if snake_coords[HEAD]['x'] == -1 or snake_coords[HEAD]['x'] == map_width or snake_coords[HEAD]['y'] == -1 or \

snake_coords[HEAD]['y'] == map_height:

tag = False # 蛇碰壁啦

for snake_body in snake_coords[1:]:

if snake_body['x'] == snake_coords[HEAD]['x'] and

snake_body['y'] == snake_coords[HEAD]['y']:

tag = False # 蛇碰到自己身体啦

return tag

蛇是否吃到食物

#判断贪吃蛇是否吃到食物

def snake_is_eat_food(snake_coords, food): #如果是列表或字典,那么函数内修改参数内容,就会影响到函数体外的对象。

if snake_coords[HEAD]['x'] == food['x'] and

snake_coords[HEAD]['y'] == food['y']:

food['x'] = random.randint(0, map_width - 1)

food['y'] = random.randint(0, map_height - 1) # 实物位置重新设置

else:

del snake_coords[-1] # 如果没有吃到实物, 就向前移动, 那么尾部一格删掉

食物随机出现

food = get_random_location()

def get_random_location():

return {'x': random.randint(0, map_width - 1), 'y': random.randint(0, map_height - 1)}

画出食物

def draw_food(screen, food):

x = food['x'] * cell_size

y = food['y'] * cell_size

appleRect = pygame.Rect(x, y, cell_size, cell_size)

pygame.draw.rect(screen, Red, appleRect)

java课程设计贪吃蛇游戏设计

前言 Java最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景。于是改造了Oak,以“Java”的名称正式发布。 Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。 与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

贪吃蛇游戏课程设计实验报告全解

辽宁科技大学课程设计说明书 设计题目:基于C#的贪吃蛇游戏 学院、系:装备制造学院 专业班级:计算机科学与技术 学生姓名:叶佳佳 指导教师:丁宁 成绩: 2015年12月12日

目录 一、概述 (1) 1、用C#实现该设计的方法 (1) 2、贪吃蛇游戏说明 (1) 二、实验目的及设计要求 (1) 1、实验目的 (1) 2、实验要求 (2) 三、课程设计具体实现 (2) 1、概要设计 (2) 1.1、设计思想 (2) 1.2、主模块实现 (2) 1.3、主函数流程图 (4) 2、详细设计 (5) 2.1、设计思想 (5) 2.2、具体模块实现: (5) 四、调试过程及运行结果 (10) 1、调试过程 (10) 2、实验结果 (11) 五、实验心得 (12) 六、参考资料 (13) 七、附录:源代码 (13)

一、概述 1、用C#实现该设计的方法 首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能,要实现模块间的高内聚,低耦合。设计模块是一个相当重要的环节,模块的数量不宜太多,也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加理解难度。此外,流程图应容易转换成代码。 根据流程图编写好代码后在WindowsXP操作系统,https://www.360docs.net/doc/b711151608.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

python实现贪吃蛇

Python版贪吃蛇.py #!/usr/bin/python from Tkinter import * import random class snake(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.body = [(0,0)] self.bodyid = [] self.food = [ -1, -1 ] self.foodid = -1 self.gridcount = 10 self.size = 500 self.di = 3 self.speed = 500 self.top = self.winfo_toplevel() self.top.resizable(False, False) self.grid() self.canvas = Canvas(self) self.canvas.grid() self.canvas.config(width=self.size, height=self.size,relief=RIDGE) self.drawgrid() s = self.size/self.gridcount id = self.canvas.create_rectangle(self.body[0][0]*s,self.body[0][1]*s, (self.body[0][0]+1)*s, (self.body[0][1]+1)*s, fill="yellow") self.bodyid.insert(0, id) self.bind_all("", self.keyrelease) self.drawfood() self.after(self.speed, self.drawsnake) defdrawgrid(self): s = self.size/self.gridcount for i in range(0, self.gridcount+1): self.canvas.create_line(i*s, 0, i*s, self.size) self.canvas.create_line(0, i*s, self.size, i*s) defdrawsnake(self): s = self.size/self.gridcount head = self.body[0] new = [head[0], head[1]] if self.di == 1: new[1] = (head[1]-1) % self.gridcount elifself.di == 2: new[0] = (head[0]+1) % self.gridcount elifself.di == 3: new[1] = (head[1]+1) % self.gridcount

基于LabVIEW的贪吃蛇游戏设计

本科毕业设计(论文) 题目:基于Lab VIEW的贪 吃蛇游戏开发设计 学号: 20114821353 姓名:王诗群 班级:11光电A1 专业:信息显示与光电技术 学院:工学部 入学时间:2011级 指导教师:秦琴老师 日期: 2011年6月8日

毕业设计(论文)独创性声明 本人所呈交的毕业论文是在指导教师指导下进行的工作及取得的成果。除文中已经注明的内容外,本论文不包含其他个人已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期:

基于Lab VIEW的贪吃蛇游戏开发设计 摘要 采用Lab VIEW软硬件平台,结合键盘的游戏操作。 关键词: Lab VIEW软件平台;键盘;贪吃蛇游戏操作方案。

Dual mode snake game development design ABSTRACT Using LABVIEW software and hardware platform, can be achieved based on the PC screen and keyboard game operation and based on photoelectric diode and switch the snake game operation. Key words: LABVIEW software and hardware platform;Snake game operation.

目录 1 绪论 (6) 2 LABVIEW简介 (7) 2.1 LABVIEW概念 (7) 2.2 LABVIEW特点 (7) 3 游戏软件设计方案 (9) 3.1设计思路简介及框图 (9) 3.2游戏界面 (10) 3.3主要程序介绍 (10) 3.3.1 初始设定 (10) 3.3.2 蛇运动方向控制 (11) 3.3.3 蛇头运动控制 (13) 3.3.4蛇尾运动控制 (15) 3.3.5蛇身加长和要吃部分产生 (16) 3.3.6蛇自撞与撞墙 (18) 3.3.7分数与最高分 (18) 4调试结果与优化 (20) 4.1调试结果 (20) 4.2进一步优化 (20) 5 结论与总结 (21) 致谢 (22) 参考文献 (23)

《贪吃蛇游戏课程设计》报告资料整理

贪吃蛇游戏程序设计 一、课程设计任务 贪吃蛇小游戏程序设计 二、设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 (1).收集资料,分析课题,分解问题,形成总体设计思路; (2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行; (4).完成课程设计报告,并进行答辩 三、需求分析 3.1、程序功能 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

3.2、设计思想 程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。

3.3、流程图

四、设计的具体实现 (1)函数定义 函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用 #define N 200 #define M 200 #include"graphics.h" #include #include #include #include #include #include #include #define LEFT 97//A #define RIGHT 100//D #define DOWN 115//S #define UP 119//W #define Esc 0x011b int i,key; int score=0; int gamespeed=250;//游戏速度可根据实际情况自行调整 struct Food { int x;//食物的横坐标 int y;//食物的纵坐标 int yes;//判断是否要出现食物的变量 }food;//食物的结构体 struct Snake { int x[M]; int y[M]; int node;//蛇的节数 int direction;//蛇的移动方向 int life;//蛇的生命,0表示活着,1表示死亡 }snake; void Init();//图形驱动

VC实现贪吃蛇的实验报告

题目:利用VC++实现贪吃蛇小游戏

一、题目:利用VC++实现贪吃蛇小游戏 利用VC++实现的贪吃蛇小游戏更加注重可视化。一条蛇在封闭的围墙内,在围墙内会随机出现一个食物,通过键盘上的W S A D四个键控制它向上,下,左,右四个方向移动。当蛇头撞到食物时表示将食物吃掉,这时蛇身增长一节,得分加一。接着随机生成食物,等待被蛇吃掉。如果在移动过程中撞到墙壁或者自己的身体,则游戏结束。游戏过程中,可以在菜单中选择暂停或者结束游戏,对游戏进行暂停或者退出。

二、编程要点(或基本思路、算法分析与说明): 本次游戏设计包含两大模块,一个模块是贪吃蛇游戏本身算法的设计,完成了贪吃蛇的食物产生,获取食物,蛇的移动等功能。另一个模块是利用MFC完成贪吃蛇的可视化显示,产生了一个对话框,在对话框可以控制游戏及游戏的显示。 1.贪吃蛇游戏算法设计包括: <1>果实出现的设计思路: (1)采用随机数生成果实出现坐标 (2)判断当前生成的果实是否在贪吃蛇身体范围内。 (3)如果在,重新生成直到不在为止。如果不在,则把坐标位置返回给调用对象。 <2>贪吃蛇更新的算法设计 (1)接收玩家按下的方向键消息,并保存到方向变量中。 (2)定义一个时间定时器,用来控制蛇运动的速度。 (3)当每次时间间隔到达时,则根据方向变量来更新贪吃蛇curr(即贪吃蛇身体)向量。 (4)判断curr向量的第一个元素中的坐标数据是否碰到边界或者蛇身,如果有,则游戏结束。否则,进行下一步。 (5)判断curr向量的第一个元素中的坐标数据是否与当前果实重合,如果有,表示贪吃蛇已经吃到果实。这时就向贪吃蛇curr向量添加一个元素,并重新生成一个果实。 (6)吃到食物后,得分会同步增加。 2.利用MFC完成贪吃蛇的可视化显示: 首先初始对话框,完成游戏的整体框架的显示。然后游戏玩家在菜单栏里选择开始,暂停,结束等,控制游戏状态。游戏开始后,玩家通过键盘上的消息控制蛇的运动。在函数DrawSnake(CDC *pDC,Snake snake),和DrawFood(CDC *pDC,SnakeFood f)完成对蛇和食物的重绘,从而显示出蛇的运动和对食物的获取。在OnPaint()函数中完成得分和游戏操作提示的显示。 本次游戏设计的主要功能函数如下: OnGameStart()(游戏开始函数), OnGamePauseStart()(游戏暂停函

贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现 学校:武汉轻工大学 院系: 班级: 姓名: 学号:

2015 年12月16日 目录 一、题目介绍 二、设计目的 三、详细设计 3.1贪吃蛇本体设计 3.2贪吃蛇食物设计 3.3游戏界面设计 3.3.1游戏初始化 3.3.2游戏开始 3.3.3游戏暂停 3.3.4游戏退出 3.3.5游戏总界面 3.3.6游戏区域与背景 3.3.7关于SNAKE 3.4玩法规则设计 3.5核心设计 四、功能测试 五、总结 六、参考文献

一、题目介绍: 编写一个基于MFC的小游戏。 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 二、设计目的: 通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。 三、详细设计 3.1贪吃蛇的本体设计 贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下: struct Snake { int x,y; int len; int direct; }Snake[50]; 3.2贪吃蛇食物设计 贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。 struct Food { int x; int y; int isfood; }Food;

贪吃蛇游戏开发与实现

南京晓庄学院 手机游戏开发技术报告 贪吃蛇游戏开发与实现 所在院(系): 数学与信息技术学院 学号:XXXXXXX 学生姓名:XX 年级专业: 08计算机科学与技术 指导教师: XXX 提交日期: 2011 年 11 月

第一章、开发平台与技术概述 (5) 1.1开发环境 (5) 1.2 WTK、ECLIPSE与JAM的介绍 (5) (1)WTK (5) (2)Eclipse (5) 1.3 JA V A语言介绍 (6) (1)面向对象 (6) (2)平台无关性 (6) (3)分布式 (6) (4)可靠性和安全性 (6) (5)多线程 (6) 第二章J2ME及其体系结构概述 (7) 2.2体系结构 (7) 2.3 移动信息设备简表概述 (7) 第三章手机游戏开发过程 (9) 3.2 详细设计 (9) 3.2.1 代码设计 (10) 第四章程序的调试与运行 (14) 4.2 游戏的运行环境 (16) 第五章总结 (17) 致谢 (18) 参考文献 (19)

摘要 随着通信技术的发展和手机的普及,手机游戏的开发技术越来越为人们所关注。以J2ME为开发平台,利用Java提供强大工具,不但可以在手机上实现静态HTML技术所无法实现的计算处理、数据存储、与服务器的通信等功能,而且能够开发各种手机游戏。本文在介绍J2ME及其体系结构的基础上,以贪吃蛇游戏为实例,描述了借助J2ME的MIDlet类库开发手机游戏的过程。 本次论文重点在于J2ME技术的应用,通过对手机游戏开发和MIDP 2.0的研究,开发了一款操作简单,并有一定可玩性的手机空中射击游戏。在游戏中玩家可以通过手机的方向键控制己方飞机的移动,己方飞机自动发射子弹。敌方飞机按照预定程序移动并自动发射子弹。当我方飞机发射子弹打中敌方飞机,敌方飞机爆炸,同理,敌方飞机发射子弹打中我方飞机时我方飞机爆炸。当双方飞机相撞时都爆炸。 关键词J2ME,手机游戏,MIDP,SPRITE,永久性数据

基于C语言的贪吃蛇游戏开发与设计

计算机科学与技术学院 学年设计说明书(论文) 作者:呼斯勒都仍 学号:159040642003 院系:计算机科学与技术学院(软件外包) 专业:计算机科学与技术 题目:基于C语言的贪吃蛇游戏开发与设计

目录前言 第一章概述 1.1中国手机游戏产业现状 1.2中国手机游戏的未来展第二章开发工具的简介 2.1可行性分析 2.2 功能性分析 第三章 3.1概要设计 3.1功能介绍 3.2概要设计图 第四章详细设计 第五章

前言 C语言是目前世界上流行、使用最广泛的高级程序设计语言。 C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。 常用的编译软件有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++, Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++, Lccwin32 C Compiler 3.1,Microsoft C,High C,等等...... C语言的发展历史 C语言的发展颇为有趣。它的原型ALGOL 60语言。 1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。 1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。 1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统 而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE 在B语言的基础上最终设计出了一种新的语言,他取了BGPL的第二个字母作为这种语言的名字,这就是C语言。 为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。 1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。 1988年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言

使用Python编写一个贪吃蛇

import random import pygame import sys from pygame.locals import * from os import system system("pause") Snakespeed = 7 Window_Width = 800 Window_Height = 500 Cell_Size = 20# Width and height of the cells # Ensuring that the cells fit perfectly in the window. eg if cell size was # 10 and window width or windowheight were 15 only 1.5 cells would # fit. assert Window_Width % Cell_Size == 0, "Window width must be a multiple of cell size." # Ensuring that only whole integer number of cells fit perfectly in the window. assert Window_Height % Cell_Size == 0, "Window height must be a multipl e of cell size." Cell_W = int(Window_Width / Cell_Size) # Cell Width Cell_H = int(Window_Height / Cell_Size) # Cellc Height White = (255, 255, 255) Black = (0, 0, 0) Red = (255, 0, 0) # Defining element colors for the program. Green = (0, 255, 0) DARKGreen = (0, 155, 0) DARKGRAY = (40, 40, 40) YELLOW = (255, 255, 0) Red_DARK = (150, 0, 0) BLUE = (0, 0, 255) BLUE_DARK = (0, 0, 150) BGCOLOR = Black # Background color UP = 'up' DOWN = 'down'# Defining keyboard keys. LEFT = 'left'

基于NiosII贪吃蛇的游戏设计(电子综合设计)

基于NiosII和LED点阵的贪吃蛇游戏设计 目录 一、摘要 (2) 二、设计目的 (2) 三、贪吃蛇设计预期目标 (2) 四、方案整体设计 (2) 五、硬件系统的设计及实现 (3) 六、软件系统的设计及实现 (11) 七、心得体会 (14) 八、参考文献 (15) 九、附录 (15) 一、摘要 基于NiosII软核处理器和LED点阵显示屏的贪吃蛇游戏内容是:一条蛇在封闭的围墙里,围墙里随机出现一个食物。玩家通过4个按键控制蛇上下左右移动,且蛇只能沿着头运动的轨迹移动。蛇头撞到食物,则食物被吃掉,蛇身体增长一节,同时记1分,又出现食物,等待蛇来吃,如果蛇头在移动中出界或咬到自己的身体则游戏结束。关键字:贪吃蛇Nios II LED点阵SOPC 二、设计目的 1、掌握按键扫描电路的设计 2、掌握用VHDL语言设计按键扫描电路的方法 3、掌握16*16 LED点阵的控制原理和用VHDL语言设计LED

点阵扫描电路的方法; 4、掌握SOPC Builder的设计流程; 5、掌握在Nios II中进行编程的方法; 三、贪吃蛇设计预期目标 1、基本功能 (1)、完成按键扫描电路的设计; (2)、完成16*16 LED 点阵的扫描电路设计; (3)、完成SOPC Builder 中的系统设计; (4)、完成单色贪吃蛇游戏的基本设计(蛇移动方向的改变,吃到果子后蛇身变长,咬到自己或者出界时的失败处理等);(5)、完成游戏图形信息提示(游戏目前所处的等级等)。 2、提高功能 (1)、能进行汉字动态显示(显示内容自动更新,形式自定,如百叶窗等); (2)、蛇头颜色与蛇身区别显示,并与果实颜色区别显示; (3)、游戏过程中加入声音提示和表情提示; (4)、所得分数在数码管上显示; (5)、能进行游戏难度的切换(不同难度下,蛇吃到相应数量的果子后升级)。 四、方案整体设计 为了实现游戏的控制、显示、设置等功能,系统需要具有控制模块,动态扫描显示模块,按键识别模块。本设计中采用Nios II软核CPU作为游戏的主控制单元,按键识别模块中的每个按

贪吃蛇游戏程序设计

测控技术与仪器专业课程设计题单 班级0982011 学生刘某某 课程名称计算机课程设计 课题贪吃蛇游戏程序设计 设计要求 1.学习游戏设计有关知识。 2.设计贪吃蛇游戏程序。 3.调试并修改程序。 4.完成课程设计论文。 课题发给日期 2011年6月25日 课程设计完成日期 2011年7月09日 指导教师余某某 评语:

贪吃蛇游戏 学生姓名:刘某某班级:0882011 指导老师:余某某 摘要:编写C语言程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。 作为一个完整的程序,必须考虑人机交流与用户体验。游戏的界面不能太丑,更不能连个简单的界面都没有。游戏应该有个比较漂亮的界面,在有必要硬件支持和软件的支持下,游戏开发者必须最大限度的使游戏美观。游戏的美观是一方面,游戏的内在素质是另一方面。一个游戏的优劣,最终由玩家决定。在游戏与玩家见面之前,游戏开发者要设计一种让玩家投入的游戏模式,并且在一定的游戏规则下进行。 关键词:贪吃蛇流程图 c语言源程序

目录 1 前言 (1) 2 课设内容 (3) 2.1课设目的 (3) 2.2设计功能 (3) 2.3结构设计 (7) 3结论 (11) 参考文献 (15) 附录A (16)

1 前言 C语言是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学生必修的科目。作为一位当代的大学生更要很好的利用它,学好一门设计语言,实现学以至用。 制作C程序报告,可以巩固和加深自己对C语言课程的基本知识的理解和掌握,并且能够掌握C语言编程和程序调试的基本技能。 通过游戏程序的设计训练可以提高自己的基本技能,更好地掌握字符串的表示方法和字符串函数的功能、Tc图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高自己编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。 C语言课程应注重边学边练,但由于课堂教学和实验的深度和广度有限,练习的深度也受到一定限制。为了弥补这一点,学校开设了本课程设计。它比教学实验复杂一些,涉及的深度广些并更加接近实用。目的是通过课程设计的综合训练,培养我们实际分析问题、编程和动手能力,最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容,更好地完成学业。 这次课程设计的主要特点如下: 1.函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序 十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增

贪吃蛇小游戏需求研究分析

贪吃蛇小游戏需求分析

————————————————————————————————作者:————————————————————————————————日期:

“贪吃蛇”游戏需求分析 一、需求分析: 贪吃蛇游戏是一个小型益智游戏,它可以锻炼人们的反应能力,尤其是在开发人的智力方面,很受人们的欢迎。本组该次小游戏程序设计包含二维数组、鼠标操作及图形化函数等方面知识。 具体需求概要如下: 1.初始化游戏界面为600*600大小,并于坐标为(250,250) 处显示游戏名称“贪吃蛇”,等待鼠标响应以开始游戏; 2.在程序中用格子初始蛇长及蛇的位置,用W、S、A、D 控制方向为上下左右进行游戏。游戏过程中,每吃到一次 食物用For循环使蛇移动的speed增加,分数加10,蛇长 加一格; 3.蛇头咬到蛇尾or蛇头接触活动区域外围则Game over, 显示累计分数,游戏结束。 二、运行环境: 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下:操作系统:windows xp 软件环境:安装VC++6。

三、设计概要: 1.初始化模块:屏幕初始化,屏幕初始化用于显示游戏信息“贪吃蛇”; 2.游戏界面模块:设计绿色的边框,边框内用黑色无框格子填充作为游戏活动区域; 3.游戏运行模块:运用函数控制蛇长及食物的关系,并使用键盘控制方向; 4.判断模块:头咬到尾或头接触活动区域外围,则游戏结束,显示累计分数。 四、详细设计及实现: 1.流程图(函数调用关系图)

python实现贪吃蛇

# encoding:utf-8 importtkMessageBox fromTkinter import Tk, Canvas, Frame from random import randint import sys class Grid: def __init__(self, master = None, window_width = 500, window_height = 500, grid_width = 25): self.width = grid_width self.bg = 7 self.start = 2 # 50 / 25 self.end = 18 # 450 / 25 self.color = ['yellow', 'red', 'pink', 'black', 'orange', 'green', 'purple', 'cyan'] self.canvas = Canvas(master, width = window_width, height = window_height, bg = self.color[self.bg])

self.draw_wall() self.canvas.pack() defdraw_rect(self, x, y, clr): self.canvas.create_rectangle(x, y, x + self.width, y + self.width, fill = self.color[clr], outline = self.color[self.bg]) defdraw_wall(self): w = self.width s = self.start * w e = self.end * w fori in range(s, e, w): self.canvas.create_rectangle(i, s, i + w, s + w, fill = 'green', outline = self.color[self.bg]) self.canvas.create_rectangle(i, e - w, i + w, e, fill = 'green', outline = self.color[self.bg]) self.canvas.create_rectangle(s, i, s + w, i + w, fill = 'green', outline = self.color[self.bg]) self.canvas.create_rectangle(e - w, i, e, i + w, fill = 'green', outline = self.color[self.bg]) classsnakenode: def __init__(self, clr, x, y): self.clr = clr self.x = x self.y = y class Food: def __init__(self, Grid): self.grid = Grid self.set_food() defset_food(self): min = self.grid.start + 1 max = self.grid.end - 2 self.x = randint(min, max) * 25 self.y = randint(min, max) * 25 self.clr = randint(0, len(self.grid.color) - 2) def display(self): self.grid.draw_rect(self.x, self.y, self.clr) class snake: def __init__(self, Grid): self.grid = Grid self.init_snake() self.direction = 'Up' self.dir_x = [0, 0, -1, 1]

基于labview的贪吃蛇游戏程序设计

成绩评定表

课程设计任务书

目录 1 目的及基本要求 0 本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小 蛇不停地在屏幕上游走,吃各个方向上出现的苹果(姑且称它为 “苹果”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的 身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。 0 4.1 运行结果 (8)

1 目的及基本要求 本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小蛇不停地在屏幕上游走,吃各个方向上出现的苹果(姑且称它为“苹果”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。 熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器原理、设计方法和实现技巧,运用专业课程中的基本理论和实践知识,采用LabVIEW开发工具,实现贪吃蛇游戏的设计和仿真。要求通过本课程设计使学生熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器设计原理、设计方法和实现技巧,使学生掌握通信系统设计和仿真工具,为毕业设计做准备,为将来的学习及今后从事科学研究、工程技术工作打下较坚实的基础。 2 贪吃蛇游戏设计原理 贪吃蛇游戏大体上可分为以下几个部分: 1) 控制部分就是通过输入输出来控制蛇的运动 2) 逻辑部分进行判断蛇吃了没有是否撞墙同时把蛇的长度增加一节还要实现分数的计算 3) 图象显示部分就是将游戏显示出来 本程序的主要实现如下功能:1.小蛇在屏幕上不停的游走;2.用键盘方向键可控制小蛇的移动方向;3.吃过一个苹果后小蛇长度增加并随机产生另一个蛋; 4.小蛇碰到四壁或者碰到自己的身体时游戏结束并给出得分和提示是否继续; 5.游戏可以有多种难度选择等 3 贪吃蛇游戏设计与仿真 3.1 前面板设计 采用LabVIEW中提供的“Express XY图”作为游戏界面,显示蛇和苹果,这样就可以通过方向键来移动小蛇到想要去的地方。对XY图的属性做如下修改:

贪吃蛇游戏策划书(第四组)

贪吃蛇游戏策划书(第四组) 贪吃蛇游戏设计文档 一.概述 本设计主要围绕贪吃蛇游戏展开。众所周知,贪吃蛇游戏一直以来是比较流行的。传统的贪吃蛇游戏功能比较少,对蛇的控制仅限于向左转和向右转,而现在的贪吃蛇游戏已经发展的相当好;具有更多的功能和友好的界面。例如,最近流行的的3D版的贪吃蛇游戏,界面相当的美观,有很强的立体效果,真实感更强,食物也为立体的且颜色绚丽。在3D版贪吃蛇游戏里面,墙壁是真实的墙壁,障碍物比较多,如树、土丘等。此外,其功能更多更强,可以选择难度。不过,总而言之,3D版与传统的贪吃蛇游戏有共性,即娱乐性与益智性。这些也是贪吃蛇游戏的优点。 因水平有限,只能设计简单的贪吃蛇游戏。不过,在功能上,比传统贪吃蛇游戏更丰富。蛇可以反向运动,操作起来,显得更为灵活。界面的颜色选用绿色,不易使眼睛疲劳。 系统名称:贪吃蛇游戏组长评分成员分工刘利霞肖莎田君刘子豪骆兵 二.制作工具 后期调试、代码整合数据操作模块模型设计软件整体框架设计以及模块划分视图层设计

本课题研究的是基于J2ME的手机贪吃蛇游戏,利用EclipseIDE工具和Sun Java ME SDK ,JAVA语法和J2ME系 统的API来实现。主要研究的对象是: 1.简单人工智能的 实现。 操作系统:Microsoft Windows XP 程序语言:Java 2 开发包:Sun Java(TM) Wireless Toolkit for CLDC IDE:Eclipse 2.面向对象的编程技巧; 的低级、高级界面的开发; 内专门游戏开发包Game包的使用 5.多线程技术的应用; 三. Game play 以及外观 贪吃蛇游戏的规则简介 在贪吃蛇游戏中,玩家操作小方块连接而成的蛇,去吃 随机散落在画面内的小方块,每吃一块就增加一小方块长度,要是撞壁以及撞自己的尾,就属于失败,如无失败则直 到通关为止。同时食物也是会变动位置的,在一定时候没有 吃到的话食物就会变换位置。屏幕的长度的行向为11单位,纵向为18单位。在这个范围内,玩家通过操作方向键来控 制蛇的运动方向。该游戏的最大特色是屏幕自适应,无论各 种手机,PDA的屏幕大小如何,该游戏总是能获得最佳的显示 效果。

单片机贪吃蛇课程设计报告

电气与信息工程学院 单片机课程设计报告 一、设计任务及要求 基本功能: 制作一个8*8点阵的贪吃蛇游戏,系统以单片机的C语言的软件设计,系统通过LED点阵屏为载体显示数据,并用五个输入端表示五个控制键(上下左右及加速)。系统硬件部分由STC89C52RC单片机,8*8点阵屏,5个按键,软件部分在keil环境下用C51语言编写,包括游戏初始化蛇的节数,以及障碍墙壁,游戏结束时自动复位。 具体要求: 1、用四个按钮控制贪吃蛇的行径,一个按钮控制贪吃蛇的加速,蛇的初始长度为2点,设置墙壁。 2、蛇吃到长度为1点的食物时,自身长度增加1点。 2、速度按钮带有一次加速,按两下速度按钮蛇的行进速度回到初始值。 3、当蛇碰到墙壁或自己的身体时游戏结束。 4、用proteus设计,仿真基于STC89C52RC单片机的8x8点阵贪吃蛇的硬件电

路。 5、游戏结束,系统自动复位。 二、硬件电路设计 本系统以STC89C52RC为核心,设置12MHz的晶振,使得单片机有合理的运行速度。LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示程序的运行情况,是模块化的显示组件,本设计采用8*8共阳红色点阵显示屏,用来显示贪吃蛇的游戏画面。五个独立按键控制蛇的游走方向(上下左右)和加速减速的功能。贪吃蛇是一款经典的小游戏,玩家通过按键操控贪吃蛇不断地吃食物,蛇身逐渐伸长,当蛇碰到蛇身和墙壁时游戏结束。 需要注意的是实际元件中,点阵的封装不尽相同,因此需要测试出每个引脚的功能,以便正确连线。注意,每个像素点的额定电压在3v左右,电压过大将会彻底损坏。 三、系统软件设计 软件方面采用了C51编写代码,代码编写模块如下图: 核心代码主要为游戏处理、信息处理和按键处理。编写游戏的功能代码,先定义游戏的数据结构和常量。其中食物的数据结构采用结构体定义,两个unsigned char变量分别定义为食物的横纵坐标;蛇的身体定义为长度最大值为20的数组,游戏中贪吃蛇长度达到39,游戏通关结束。 游戏处理模块为贪吃蛇在游玩过程中遇到的需要被处理的情况,主要实现的功能包括以下四个方面,即移动、食物、死亡和加速。 1、移动

少儿编程分享:手把手教你用Python编写贪吃蛇(五)

游戏分享:手把手教你用Python编写 贪吃蛇(五) 2018.1.14 游戏代码还是挺长的 更多素材可以在码趣学院公众号(maquxueyuan)留言领取 确定苹果出现的位置 163. def getRandomLocation(): 164. return {'x': random.randint(0, CELLWIDTH - 1), 'y': random.randint(0, CELLHEIGHT - 1)} 当我们需要一个新苹果出现,我们就需要调用getRandomLocation()函数。这个函数将返回一个存有横纵坐标x、y的字典,x、y的值是由random.randint 随机产生的。 游戏结束界面 167. def showGameOverScreen(): 168. gameOverFont = pygame.font.Font('freesansbold.ttf', 150) 169. gameSurf = gameOverFont.render('Game', True, WHITE) 170. overSurf = gameOverFont.render('Over', True, WHITE) 171. gameRect = gameSurf.get_rect() 172. overRect = overSurf.get_rect() 173. gameRect.midtop = (WINDOWWIDTH / 2, 10)

25) 175. 176. DISPLAYSURF.blit(gameSurf, gameRect) 177. DISPLAYSURF.blit(overSurf, overRect) 178. drawPressKeyMsg() 179. pygame.display.update() 游戏结束界面和游戏开始界面相似,只不过游戏结束界面不是动画。我们用两个Surf对象分别放置“Game”和“Over”两个单词。 180. pygame.time.wait(500) 181. checkForKeyPress() # 清除事件队列中按下键盘度事件 182. 183. while True: 184. if checkForKeyPress(): 185. pygame.event.get() # 清除事件队列 186. return “Game Over”会一直显示在屏幕上,直到玩家按下任意键。为了防止玩家太早 (很可能是不小心)按下键盘,我们在第180行使用pygame.time.wait()添加 半秒的等待时间。在这半秒内,按下键盘也不会退出游戏结束界面从而重新开始游戏。(括号内的参数500代表500毫秒,即0.5秒)。这是为了类似这样的情况 发生:比如玩家在最后关头试着避开屏幕的边缘,但是由于按键太晚导致小蛇撞死。如果是这样的话,玩家很可能是在showGameOverScreen()被调用后才按下的键,而这时按下的键会导致退出游戏界面并且重新开始游戏。

相关文档
最新文档