贪吃蛇设计

贪吃蛇设计
贪吃蛇设计

手机模拟贪吃蛇软件设计

总计: 毕业论文36页

表格2表

插图11 幅

指导教师:

评阅人:

完成日期:

摘要

随着科技的发展,社会的进步,生活节奏的越来越快,人们的工作压力也随之加大。设计一款上手简单,生动有趣,娱乐性强的便携小游戏,在繁重的工作之余玩玩小游戏,不仅可以调节人们的情绪,舒缓人的心情,还能益智健脑,就能更好的投入到工作学习中。贪吃蛇游戏是一款深受人们喜欢的经典小游戏,也是一款很有耐心的游戏,操作简单,灵活多变,富有挑战性,是人们休闲之时缓解压力,放松身心的不错选择。

通过对手机游戏研究背景,国内外现状,以及手机游戏发展趋势等分析,了解到手机游戏对于现代人的必要性。本文旨在利用At89c51单片机模拟出二维贪吃蛇游戏,首先对贪吃蛇游戏的设计原理进行了全面的分析,然后根据传统的贪吃蛇游戏,设定本文要实现的贪吃蛇游戏的几个功能。最后确立贪吃蛇游戏的设计目标:有记录游戏时间、游戏得分和游戏等级的功能,有简单的游戏地图。贪吃蛇要能在地图上随意的行走,当贪吃蛇碰撞墙壁和自身的时候游戏会结束。有随机的食物出现在地图上,贪吃蛇每吃掉一个食物,增加分数和等级,并能再随机生成一个食物。

在具体实现方面,本设计硬件系统平台采用At89c51单片机,搭载12864液晶,键盘构成一个轻巧便携的游戏机系统。软件采用C语言编程,方便灵活,大大加快了软件开发速度,缩短了开发周期,并且便于移植。在确定了硬件器件的基础上,本文设计了贪吃蛇游戏的系统电路。根据不同的模块将系统电路分为At89c51单片机模块、12864液晶模块和按键模块进行具体的电路设计,并给出了贪吃蛇游戏的时序图,便于游戏软件部分的实现。最后的软件设计部分,本文先确立了软件设计思想,将软件设计分为游戏模块、信息模块和按键模块三部分,并给出了各个模块的架构图和软件设计的流程图,再按照模块进行具体的软件设计。

本文设计的贪吃蛇游戏具有一定的创新性和挑战性,最终能够很好的实现贪吃蛇游戏,并且能在Protues软件上进行游戏模拟。

关键词:手机游戏;贪吃蛇;单片机;C语言

Abstract

With the development of science and technology, social progress, increasingly fast pace of life, people work pressure also will increase. Started to design a simple, interesting, entertaining portable games in his spare time heavy play games, not only can regulate people's emotions, relieve people's emotions, but also puzzle brain, can be more good learning into work. Snake game is a classic by people like the game, but also a very patient game, simple, flexible, challenging, when people leisure relieve stress and relax the body and mind good choice .

Through the mobile game background, home and abroad, as well as mobile game development trend analysis, understand the need for a modern mobile game. This article aims to simulate the use of 51 single -dimensional Snake game, the first of Snake game design principles for a comprehensive analysis, and then based on the traditional snake game, set to be achieved in this article Snake game several functions. Finally, establish Snake game design goals: a record game time, game scores and game level of functionality, there is a simple game map. Snake to be able to walk freely on the map, when Snake collision walls and its own when the game will end. Random food appear on the map, Snake eats a food every increase scores and grades, and again randomly generate a food.

In terms of implementation, the design of the hardware platform uses 51 series, equipped with 12,864 LCD, keyboard constitutes a lightweight portable game systems. Using SCM as the control, you can simplify the hardware circuit, using software programming control MCU hardware circuit function, reduce energy consumption and reduce costs. In determining the hardware device, based on the Snake game we design a system circuits. Depending on the module system 89C51 microcontroller circuit is divided into modules, 12864 LCD module and key module specific circuit design , and gives a timing diagram of the Snake game , the game is easy to realize the software part . The final part of software design , the paper established the first software design, software design into the game module , information module and key module of three parts , and gives a flow chart diagram and software architecture design of each module , and then follow the module specific software design .

This design Snake game with some innovative and challenging, and ultimately be able to achieve very good Snake game, and the game can be simulated on Protues.

Key Words:Mobile games; Snake; SCM; C language

目录

摘要 ................................................................................................................................ I Abstract ................................................................................................................................. II 1 绪论 .. (1)

1.1 研究背景 (1)

1.2 手机游戏国内外现状和发展趋势 (1)

1.2.1 手机游戏国内外现状 (1)

1.2.2 手机游戏的发展趋势 (1)

1.4 本文的主要内容 (2)

2 贪吃蛇游戏的设计原理 (3)

2.1 手机游戏设计基础 (3)

2.2 贪吃蛇游戏设计需求 (4)

2.3 设计目标 (5)

3 贪吃蛇游戏的系统电路设计 (6)

3.1 系统整体电路设计 (6)

3.2 89C51单片机电路设计 (7)

3.3 12864液晶电路设计 (7)

3.4 按键电路设计 (8)

3.5 贪吃蛇游戏时序图 (8)

4 贪吃蛇游戏的软件设计 (10)

4.1 设计思想 (10)

4.1.1 游戏模块 (10)

4.1.2 信息模块 (12)

4.1.3 按键模块 (14)

4.2 游戏模块软件设计 (18)

4.3 信息模块软件设计 (19)

4.4 按键模块软件设计 (19)

5 总结 (21)

参考文献 (22)

附录一:外文文献译文 (24)

附录二:外文原文 (27)

附录三:程序代码 (30)

致谢 (31)

大连大学学位论文版权使用授权书 (32)

1 绪论

1.1 研究背景

随着社会的发展,人们生活的步调日益加快,越来越多的人加入了全球化的世界。人们不再拘泥于一块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成了必需品。贪吃蛇这一游戏简单易行,操作方便,娱乐性较强,吸引了不少人。这一款游戏紧紧地抓住了人们的心理,虽然简单,却其乐无穷,在人们不断追求更多的欲望下,该游戏给人们带来了追逐的快感,以及成功后的满足感,对于一直处于高压下的现代人是很好的放松工具[1]。

当前科学技术飞速发展,特别是微电子技术,计算机软件与应用技术的发展,使得人们的日常生活丰富多彩。单片微型计算机(简称单片机)作为微型计算机家族的一员,以其独特的结构,良好的稳定性,便宜的价格在嵌入式领域广泛应用。与传统的PC上设计的贪吃蛇游戏不同,本次作者利用Proteus硬件仿真软件[2],采用单片机、液晶显示屏、按键等搭建硬件平台,C语言编程,实现便携地贪吃蛇游戏[3]。

1.2 手机游戏国内外现状和发展趋势

1.2.1 手机游戏国内外现状

近年来,网路尤其是无线通信网络在国内迅速普及,网络游戏也得到了高速发展。同样手机的普及,使得手机游戏市场空前发展。国内外巨大的手机使用量,也让商家看到了新的商机,手机游戏市场利润将会十分的丰厚。面对潜力巨大的手机游戏市场,各大游戏开发商、运营商、服务商以及手机终端厂商等都开始准备应对措施,以便抢占更多的手机市场分额。Nokia、索爱、三星等各大手机厂商开始不断的提升手机的游戏性能,同时采用开放式的手机操作系统,方便用户能够享受到不同的游戏业务[4]。而国内游戏开发商,如盛大、腾讯、网易等公司,纷纷跻身手机游戏开发商行列。新浪、搜狐等著名的门户网站,也纷纷涉足手机游戏领域,相继开辟了各自的手机游戏相关栏目,其他一些游戏网站也都加快了手机游戏开发的脚步。现阶段国内的手机游戏还局限于小型单机游戏和简单的卡牌类网络游戏,而国外已经开始致力于开发能够依靠GPRS定位,或者用户佩戴辅助器械的大型手机游戏[5]。

1.2.2 手机游戏的发展趋势

每个人都可以随时随地玩手机游戏,虽然手机游戏的价格不贵,但它的使用量巨大,也因此带来巨大的商业价值。手机游戏具有娱乐性和趣味性,而且它的操作简单,易与掌握,是人们日常生活中不可或缺的娱乐方式。伴随着3G、4G时代的到来,手

机上网逐渐普及,上网资费进一步下调,使用手机进行娱乐互动的消费者越来越多。随着移动快捷支付系统日趋成熟和盈利模式的逐渐明朗,随着资本对于手机游戏市场的关切,随着业界内各个环节逐渐完善与壮大,手机游戏必将会迎来一个新的发展高峰[6]。

高科技游戏曾经是任天堂、索尼和微软三足鼎立的天下,由于智能手机的兴起,手机游戏的发展在短短2年里就超越了掌上机及电脑游戏。Pop Cap Games公司针对2500名英美成年人所做的调查显示,有一半以上的受访者至少玩过一次手机游戏。

大量平价游戏、更为简化的游戏技术,大大降低了用户玩手机游戏的门槛,在中国手机游戏几乎都是免费下载的。撇开平价手机游戏所带来的商业影响不谈,游戏开发商认为手机游戏其实蕴藏着无限发展机遇。智能手机用户是移动行业中数量增长最快的用户,手机游戏公司们最近的表现也同样势不可挡。

操作简易,内容简单的游戏是小型手机游戏的主打产品,但随着电子技术的发展,手机硬件性能的不断提升,手机电池容量更大续航时间更久,以及手机外设的开发,手机游戏也向着流畅舒服的操作,内容丰富的大型游戏制作方向发展。开发大型手机游戏不仅能开拓新的市场,新的商机和利润,也能给用户带来操作、视觉的双重享受。

贪吃蛇作为一款操作简单的单机类游戏,在竞争激烈的手机游戏领域中,近些年来也得到了充分的发展。Nokia在其WP7手机上推出了疯狂贪吃蛇(Crazy Snake),虽然操作简单,画面简单,但游戏体验早就不简单了,是一款不能错过的游戏[7]。Snake 的开发商XIMAD又推出了宝石贪吃蛇游戏,这款名为Snake的游戏将贪吃蛇的画面水平推向了一个新的高度。Snake无论是游戏画面还是游戏可玩度都非一般的贪吃蛇游戏所能比拟的。在这款游戏中,你的贪吃蛇将会在地下收集文物,但是要及时的避开各种障碍物,以通过各种关卡,获取积分。不仅如此,贪吃蛇游戏还发展出了3D贪吃蛇,现在正在开发的GPRS定位通过用户走动控制的贪吃蛇游戏,将会把贪吃蛇推向新的高度[8]。

1.4 本文的主要内容

本文按照嵌入式软件整个系统的开发流程进行论文书写,首先第二章进行游戏的设计原理进行分析,分别是设计基础、需求、目标。然后第三章介绍系统的电路设计,详细介绍了核心CPU,12864液晶以及按键电路设计,第四章介绍软件结构的设计与模块划分,各模块软件的详细设计与实现,最后是文章的总结。

2 贪吃蛇游戏的设计原理

2.1 手机游戏设计基础

手机游戏是指能在手机上运行的游戏软件。随着科技的进步与发展,现在手机的功能也越来越全面,越来越强大。而手机游戏也不在是我们印象中的“俄罗斯方块”“坦克大战”之类画面简陋,规则简单的游戏,进而发展到了可以和掌上游戏机媲美,具有很强的娱乐性和交互性的复杂形态的游戏了[9]。于是,对于现在的人们来说,已经可以抛弃随身听和GBA等电子产品,购买一个比较好的手机已经能够满足用户大部分的娱乐需求。

手机游戏种类颇多,但总体上来说可以分为两大类:单机游戏和网络游戏。手机单机游戏是指不连入移动互联网即可在自己手机上玩的游戏,多为人机对战模式;手机网络游戏则是利用无线移动网络,可供多用户同时参与的手机游戏类型,目前主要有WAP网络游戏和客户端网络游戏两大类。近年来3G网的普遍,不少用户也开始进入了手机网络游戏的时代。手机网络游戏行业在多年的技术经验与运营经验的积累与总结后,2009年左右创造出了新的游戏模式与新的运营模式,推动了手机网络游戏市场的爆发。在中国移动服务平台以及数量巨大的手机上网及游戏用户消费需求的刺激下,导致手机用户对手机网络游戏的需求欲望不断高涨,用户基数也快速上升[10]。

若根据手机游戏不同的游戏形式,又可以分成文字类游戏和图形类游戏两种。文字类游戏是以文字交换为形式的游戏,文字类游戏又可分为短信类和Web类两种。这种游戏一般都是通过游戏本身给用户的手机发送提示,回复相应信息进行游戏,“虚拟宠物”就是很知名的典型短信类的文字游戏。文字类游戏都有着一个共同的特点,即游戏都是通过文字描述来进行操作的。游戏过程中,需要用户进行过多的想象,使得游戏相对比较单调。虽然现在已有了“彩信”等特殊服务可以让游戏变得更加人性化,但是游戏本质依旧不能改变。而且,对于文字类游戏来说,其不低的消费价格仍然是制约其发展的瓶颈[11]。

图形类游戏更加接近我们常说的“视频游戏”,用户通过动画的形式进行游戏发展情节。由于图形类游戏采用了更加直观且更加精美的画面直接表现,因此图形类游戏的趣味性和代入感往往比文字类游戏高。因此广受游戏玩家的欢迎。图形类游戏主要分为:嵌入式游戏,java游戏,Brew游戏,手机网络游戏等,以下具体介绍嵌入式和Java类游戏[12]。

本文介绍的就是嵌入式类游戏,嵌入式游戏是一种事先将游戏程序固化在手机的芯片中的游戏,就像早先的Nokia手机。由于这种游戏的所有数据都是固化好在手机芯片中的,因此无法对游戏进行任何修改操作。也就是说,用户不能更换其它的游戏,只能玩手机中已经存在的游戏,而且也不能将游戏删除。

Java手机游戏是现在Android手机最主要的游戏开发语言,只要是支持Java程序的手机都能安装,很多手机小游戏都由Java开发。由于Java软件的通用性强,Java 手机游戏开发出来便可适用绝大部分机型。虽然游戏可移植性强,通用性强,但是当开发者面对众多不同分辨率的机型时候,适配冷门机型会出现不兼容的问题,而其对手机内存的消耗相比其他语言的手机游戏也更加难以控制,由于语言的限制,使得Java游戏难以做出技术含量很高的动感画面,如3D效果等[13]。

2.2 贪吃蛇游戏设计需求

我们设计的这个贪食蛇小游戏应该有以下几个功能:

(1)要求有比较友好的界面,界面应该包括得分显示,游戏状态(运动,暂停,结束),游戏难易程度显示(容易,较难,困难),关于游戏(包括教初玩者如何操作,及游戏规则)。另外,在界面显示的效果应该简洁大方,尽量能够很快吸引玩者。

(2)当游戏刚开始的时候,先应该产生一条蛇和随机产生一个食物。当按某个键的时候,蛇就开始移动,按照按键的方向运动。

(3)蛇可以运动,随着难易程度的不同,蛇的速度也不同;在界面里可以随机产生一个食物,但应该注意不能和蛇的身体重叠,然后当蛇移动吃掉这个食物(覆盖),蛇的身体应该相应地增加,同时界面中显示分数栏目应该相应地增加分值;当蛇在移动的过程中头部碰到墙壁或者碰到自身,游戏结束[14]。

提出的要求:

按键的时候可以控制蛇身按照设置的方向移动;

游戏的难易程度不同时,蛇体速度应该也是不同,每升一级速度提升20ms;

游戏开始时候,应该有一个初始化,设置蛇身,食物,移动速度,清除分数得;

游戏结束时,会有相应的处理,比如“GANEOVER”提示;

可以实现的要求:

简单友好的界面;

蛇的移动和控制;

对蛇的状态的监听,及对得分的显示;

蛇的状态的变化;

应该有的对象及其他们之间的关系:

Game对象;

Wall对象;

Snake对象;

Food对象;

它们之间的关系:Game对象中应该包括其他三个对象;Snake对象和Food对象

应该有相同的形状。这几个对象差不多可以反映上面的要求[15]。

2.3 设计目标

在能够实现游戏需求的情况下,要保证游戏能够正常运行不会出现低级的错误。本设计的关键在于蛇的图形及蛇的移动,用12864液晶[16]的一个像素表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头也用一个像素表示。移动时必须从蛇头开始,所以蛇身不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头向此方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇身的位置和新蛇身的位置差一个单位,所以看起来蛇身多一节身体,所以将蛇的最后一节身体用背景色覆盖。食物的出现与消失也是画像素点和覆盖像素点。为了便于理解,定义两个结构体:食物与蛇。最终我们要达到的效果是:利用方向键,能让贪吃蛇在地图上随意走动,当吃到食物时,能立即随机放置下一个食物,游戏会记录时间、分数、等级,游戏也会随等级升高增加难度,因撞墙、撞蛇身等情况时能立即结束游戏,有复位/暂停功能[17]。

3 贪吃蛇游戏的系统电路设计

3.1 系统整体电路设计

系统采用的器件主要有At89c51单片机,12864液晶和按键。整体电路的设计由At89c51作为核心CPU,12864液晶作为游戏的人机界面,行列式键盘作为游戏操作外设部分,完全能够实现本设计的所有功能,本章将详细介绍主要器件电路的设计原理。贪吃蛇游戏的系统原理图如图3.1。

图3.1 系统原理图

3.2 89C51单片机电路设计

本设计采用AT89C51单片机作为核心CPU,这款单片机内置了4KB的程序存储器ROM和256B的数据存储器RAM,能满足游戏对存储空间的要求。另外配备了4个8位并行I/O接口:P0口、P1口、P2口、P3口,用于并行输入/输出数据,2个16位定时器/计数器,用于对外部事件的计数或定时,1个全双工串行I/O口,实现单片机之间或单片机与PC机之间的串行通信,5个中断源,2个优先级的中断系统。其主要运行原理是使用单片机的I/O口P0.0~P0.7驱动12864液晶,向12864的数据口DB0~DB7写数据或指令,使12864显示相应的游戏信息和游戏界面。单片机的P2口接2*3矩阵键盘,采用查询方式扫描键盘,在有键按下的时候,单片机读取键值,按照按键的功能进入不同的游戏状态[18]。

3.3 12864液晶电路设计

12864是一款常见的点整液晶,原理比较简单使用起来也方便。整个液晶为128列*64行点阵,128列中前64列对应左屏(由CS1选择)/后64列对应右屏(由CS2选择)每个屏幕分为8页,64列管理,每页8行。编程时显示坐标需要确定X(页坐标)和Y(列坐标),行坐标只用来选择显示的起始行[19]。

该液晶一共有18个引脚分别对应的功能是:

1脚:CS1=0,选中左屏

2脚:CS2=0,选中右屏

3脚:GND,电源地

4脚:VCC,电源正

5脚:V0,LCD驱动电压输入

6脚:DI(RS):指令L/数据H

7脚:RW:读H/写L

8脚:E:使能信号

9脚到16脚:DB0-DB7,数据线(传输指令或者数据)

17脚:RST,复位,低电平有效

18脚:VOUT,负压输出,调整显示屏的VOP显示对比度

19 脚:LCD_A,背光源正极

20脚:LCD_K,背光源负极

本设计利用51单片机的P0.0~P0.7往液晶的DB0-DB7写入数据,就能显示想要的图形。但前提是必须确定好要写的位置,那么还得用到CS1(CS1=0选择左屏)、CS2(CS2=0选择右屏)以及利用程序编写选择具体的页(每屏有8页)和列(每屏有64列)就能确定具体的位置[20]。

3.4 按键电路设计

本设计采用的是行列式键盘,行列式的盘特点是按键多时,节省I/O口线。一共有6个键,使用2*3键盘,即两根行线和三根列线。行线分别连接单片机P2.0和P2.1,列线分别连接P2.4、P2.5和P2.6。将行线即P2.0和P2.1设置为低电平,利用软件,在有键位按下时就能检测到具体的按键了[21]。

图3.3 按键原理图

3.5 贪吃蛇游戏时序图

为了更好的完成设计,弄清楚游戏的流程,因此给出完整的时序图就至关重要,本设计的时序图如图3.4,能够一目了然本设计的时序和流程,为后面的软件设计部分提供参考。

整个游戏的时序大致是这样的:先由在玩家按下有效的键位,整个系统进入按键模块进行按键处理,由CPU得到按键信息后将按键信息传递给游戏控制相关模块。

这时我们就要根据要求考虑到游戏进行的好几种情况,在此选择一种方式介绍。比如贪吃蛇吃到了食物,那么蛇身就要加一,得分也要加一,就要考虑处理的先后顺序,本设计是先处理蛇身加一,再处理分数加一,分别将信息传递给显示处理模块和信息处理模块。当然模块之间也需要信息的反馈等,比如信息模块处理得分,发现分数已经达到最大值时,就要把信息反馈到游戏处理的相关模块,让游戏显示通关画面。如此不断的循环往复,就能让游戏正常的运转下去。

图3.4游戏时序图

4 贪吃蛇游戏的软件设计

4.1 设计思想

4.1.1 游戏模块

贪吃蛇游戏的最主要部分当然是游戏模块了,包括游戏界面和游戏处理两部分。游戏界面因为受资源和技术的限制,只能显示最基本的贪吃蛇蛇身、食物以及简单的游戏地图。游戏处理是后台运行的,主要处理有游戏初始化,贪吃蛇蛇身的增加,碰撞和移动。

图4.1 游戏模块架构图

(1)游戏显示子模块:本模块需要在液晶上显示出游戏的地图、食物和贪吃蛇。12864液晶只有128*64个像素点,并不是很足够。为了较好的实现游戏,游戏界面占据了大概三分之二的屏幕,为了节省像素点,设定蛇身、食物、场景的单位都为一个像素点,12864液晶会不断的刷新屏幕,使得显示的内容和游戏操作的效果一致[22]。

(2)游戏处理子模块:蛇身移动处理:根据用户按键的键值蛇身进行移动。“贪吃蛇”运动的时候并不是整体蛇身向一个方向运动的,而是在每个时钟到来时,由蛇头带动每个点阵的方向都向下一个点阵传播,然后自己向新的方向运动一步。运动后,下一个点阵由于得到了上一个点阵的方向,就按照此方向同样地运动一步[23]。所以,它会马上填补上一个点阵的位置,如此类推。实际上在设计贪吃蛇的时候,只需要把蛇尾的那个点阵去掉,然后在蛇头的新方向上放一个点阵就可以了。因此定义一个函数用于更新点的坐标,只要知道蛇头或蛇尾的坐标和运动方向,就可以调用该函数更

新蛇头或蛇尾的坐标,同时调用相关显示函数,实现蛇身运动处理。蛇头的方向可以通过按键捕获实时获得。而蛇尾的方向获得要困难得多。为节省空间,定义一个无符号char类型一维数组存储蛇头方向信息。蛇身运动期间需要在该数组中记录下每次蛇身移动一步,蛇头的运动方向。定义两个变量分别代表蛇头和蛇尾,每次存储蛇头运动方向后,代表蛇头的变量加一,以便在下一位置继续存储蛇头运动方向;代表蛇尾的变量则指向数组的开始位置,通过该变量读取数组中尾的运动方向(因为存在该数组中蛇头的运动方向,随着蛇头坐标的移动,存在数组位置的运动方向即是蛇尾的运动方向),通过读取的蛇尾运动方向便可以更新蛇尾坐标[24]。

(3) 游戏处理子模块:吃到食物处理:蛇头坐标与豆子坐标相等,则吃到豆子。如果吃到豆子,在蛇头位置增加一个单位点阵,并更新豆子的坐标。放置新的豆子。通过更新豆子的坐标实现放置新的豆子。放置豆子的过程中,还需要判断新豆子的坐标是否与蛇身或障碍物坐标重叠,如果重叠,则需要重新放置和判断,直到新的豆子不与蛇身或障碍物坐标重叠为止。

(4) 游戏处理子模块:碰撞处理:蛇身运动的过程中,若蛇头碰到墙,障碍物或自己的身体,则游戏结束。在游戏中,任何时候按下开始/暂停键,则游戏暂停,可以进一步选择是否退出游戏。其中游戏暂停的处理是通过关闭定时器实现的[25]。

图4.2 游戏模块流程图

4.1.2 信息模块

游戏进行中的所有信息都在这个模块里体现,为了更好的体验游戏,加入记录时间、分数和等级的功能。游戏得分在每次吃到一个食物的时候加一,等级是每加两分提升一个等级,同时贪吃蛇移动速度加快。信息模块在游戏重置时同时重置,暂停时仅停止游戏的进行。同样的信息模块也分为显示和处理两部分。

图4.3 信息模块架构图

(1)信息显示子模块:需要在液晶上显示计时、分数、等级字样,并且要显示对应的数字,设计和游戏显示子模块类似。

(2)信息处理子模块:计时处理:51单片机自身带有计数器/定时器功能,利用其定时功能对游戏进行计时, 从游戏开始时计时从零开始计时,一秒加一,按照秒、分、时进位,游戏暂停时计时也同时暂停,重置游戏时时间归零。

(3)信息处理子模块:计分处理以及等级处理:分数功能是让玩家获得游戏成就感,打破原有的分数创造新高更具挑战性,本文设定吃一个食物得一分,每次得到两分时等级加一。等级加一时,同时增加游戏难度,加快蛇的移动速度,每升一级固定加速20ms。

图4.4 信息模块流程图

4.1.3 按键模块

游戏的操作完全在按键模块中,按键一共有6个,分别为上、下、左、右方向键,以及菜单键和确认键。

图4.5 按键子模块架构图

按键部分最重要的是要区分按下的哪个按键,正确的判断出来,这就需要利用程序算法来实现。根据得到的正确按键,通过不同的接口函数将按键信息传递给游戏模块或信息模块进行游戏的各种操作。

图4.6 贪吃蛇按键流程图

将三个模块结合起来就是完整的贪吃蛇游戏,下图给出了整个游戏的流程图。

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/d314081875.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

基于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)

STM32课程设计贪吃蛇

STM32大作业报告 学生: 学号: 所在院系:光电信息与计算机工程学院专业班级: 授课教师: 完成时间:2016年

前言 随着科学技术的不断进步,嵌入式近些年来逐渐兴起,其领域比较新,发展非常迅速,由于它属于新兴领域,接触的人并不是很多,但是嵌入式在各种电子设备上的应用越来越越广泛,并且各种电子设备也在朝着嵌入式微系统,智能化的方向前进。STM32系列是基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M核。作为21世纪的人才,为了与社会实际需要相衔接,提高我们的学习兴趣,利用STM32系列单片机进行了一次嵌入式系统设计。 摘要 在本次作业中采用STM32系列中的STM32F103RCT6微控制器芯片,采用ALIENTEK战舰STM32开发板,使用MiniSTM32开发板上的LCD 接口,来点亮TFTLCD,实现触摸屏功能。

一、课程设计任务要求 本次的课程设计目的是实现一个经典的贪吃蛇游戏,整个游戏实现功能分别为: 1、初始化程序。 2、随机红点、左转、右转、判断边框。 二、系统硬件设计 硬件设计原理图 根据此硬件设计图再结合软件设计就能做出此游戏。 三、系统软件实现 此次的课程设计在于开发个贪吃蛇游戏,其流程图如下图所示。

程序流程图 为方便介绍,此软件实现只给出主要程序部分: 1、本例程提供了硬件平台的初始化 GPIO是常规输入/输出端口,STM32F103RCT6有PA、PB、PC、PD、PE 共5个16位的GPIO。STM32的GPIO都可编程,具有很多复用功能。GPIO 可以配置为很多总模式,这些模式有:输入浮空、输入上拉、输入下拉、模拟输入、开漏输入、推挽输出、推挽复用、开漏复用。通过对GPIO寄存器编程,可以设置每个端口的工作模式。 24C02 EEPROM是开发板板载的2Kbit(256 个字节)EEPROM ,型号为:24C02,用于掉电数据保存。因为STM32 部没有EEPROM,所开发板外扩了24C02,用于存储重要数据,用来做IIC 实验,该芯片直接挂在STM32 的IO 口上。 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS 公司开发的两线式

C语言贪吃蛇程序设计说明书

C语言贪吃蛇程序设计说明书 题目:贪吃蛇游戏 学校: 系别: 专业 班级: 姓名: 学号: 指导老师: 日期: 一、设计题目: 贪吃蛇是一款经典的休闲游戏,一条蛇在密闭的围墙内,随机出现一个食物,通过控制方向键操作小蛇不停的朝着食物前进,直到吃掉食物。每吃一个食物,小蛇都会长长一截,随之难度增大;当小蛇头撞到墙或自己时,小蛇死亡。 二、功能设计: 本游戏要求实现以下几个功能: (1) 用上、下、左、右键控制游戏区蛇的运动方向,使之吃食而使身体变长; (2) 用户可以调节蛇的运行速度来选择不同的难度; (3) 游戏分多个难度级别; (4) 用户可自选颜色; (5) 记录成绩前五名的游戏玩家; (6) 增加背景音乐; (7) 提高障碍物和游戏级别。 三、程序模块图: 贪吃蛇游戏 初画控设帮 始图制置助 模模模模化 块块块块

墙蛇食移食死变成等音 体身物动物亡长绩级效 2 四、算法流程图: 开始初始化界面和蛇身 放置食物 获取按键 开始运动 碰到边界 是 否 否蛇吃到食 是 蛇长大 蛇死亡是 继续 否 结束 3 五、函数原型与功能 1.主函数:void main() 启动程序,触动其他函数。 2.初始化:void init () 设置背景框大小、蛇体初始值,随机产生食物。 3.随机产生食物:void setfoodcrd()

设置食物生成坐标,0表示食物被吃。 4.画食物:void showfood() 用矩形框来画食物 5.画蛇:void showsnake() 根据蛇的坐标和节数,循环用矩形框来画蛇。 6.蛇移动:void snakemove() 根据按键,重设坐标 7.改变蛇的方向:void changeskdir() 响应用户的运动方向 8.判断蛇是否死亡:void judgeslod 判断蛇是否碰到自己或墙。 9.判断蛇是否吃到食物:void judgefood() 判断是否吃到食物,吃食后变0,蛇增长一节。 10.结束游戏:void gameover() 结束话语,并执行下一步。 六、基本代码 #include #include #include #pragma comment(lib,"Winmm.lib") #include "MyTimer.h" #define SIZEMAX 100 /*蛇最大长度*/ #define SPEED 100 /*初始速度*/ #define len 20 /*蛇宽度*/ #define lm 10 /*蛇每次移动距离*/ #define initlen 600 /*初始化窗口正方形的长度*/ #define Min_snakelen 2 /*蛇的最小长度*/ typedef struct { int x,y; }DIR; int snakelen=Min_snakelen; /*蛇的长度*/

贪吃蛇小游戏实验报告[

软件设计报告 设计题目:贪吃蛇 学院:华北电力大学科技学院 专业班级:软件10K1 学生姓名:张飞 学生学号:101909020122 指导教师:乔玲玲 提交时间: 成绩: - 0 -

目录 一.需求分析 二.概要设计 三.详细设计 四.心得体会 一.需求分析 1.1关于题目 1.1.1题目要求 利用Microsoft Visual C++制作一个贪吃蛇的小游戏,要求: (1)应用MFC单文档制作 (2)能够记录游戏成绩 (3)可根据玩家要求设置游戏速度(级别):初级,中级,高级 (4)可以根据个人喜好更换背景图片,食物图片,障碍物图片,结束图片等 1.1.2选题背景 贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我们,它的制作方法对于以前的我们而言都是很神秘的。我们希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我们的编程能力不是很强,但是我们有信心,在这次学习中我们将从实践和实际的项目中提高自己的编程能力。因此我们选定了这个题目。 1.2关于编译软件 本程序采用Microsoft Visual C++6.0的英文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。 - 1 -

- 2 - 1.3关于兼容性 本程序经过调试,可以在XP 系统下编译运行,也可以在Vista 下运行,界面稍有不同,但不影响运行结果。 二. 概要设计 2.1软件主要功能设计 2.1.1程序结构 根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、停止游戏,设置游戏级别(速度),设置图片等。具体的程序结构如下面的图1-1所示。 图2-1 贪吃蛇结构图 2.1.2程序流程 根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括: 游戏开始,随机出现食物。 贪吃蛇 游 戏开始 游戏设置 游戏结束 开始 初级 中级 高级 结束

贪吃蛇设计规格说明书

贪吃蛇设计规格说明书 院系:信息技术学院 姓名:livechange 指导老师:XXX 日期:2016-06-07

目录 一、设计背景 (2) 二、需求分析 (2) 三、运行环境 (3) 四、设计概要 (3) 五、详细设计 (5) 六、停止游戏 (8)

贪吃蛇 一、设计背景 随着科技的发展,笔记本、手机的价格相对于以前下降很多,现在很多普通人也可以使用笔记本、智能手机。笔记本、手机不再只是主要用来办公、接打电话。更多的用户希望在工作、学习之余通过方便灵巧可随身携带的设备休闲娱乐。因此,为了迎合众多用户的需求并适应用户要求,开发具有很强的娱乐性和交互性的贪吃蛇小游戏。可以说该游戏的优势在于它的简单易行,不论是笔记本、iPad,还是智能手机,都能很快顺利的运行。在如今社会,人们的工作学习压力逐渐增大,生活节奏逐渐加快,大多数人没有足够的时间去休闲娱乐,放松自己。这款小型的游戏,可以让我们随时随地都能享受游戏。让我们从繁重的日常生活中解脱出来。游戏的主界面应该力求简单,以提高玩家对游戏的兴趣。游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。由于本程序简单易操作,交互性好,对用户没什么特别要求。一般用户经过几分钟练习都可以熟悉本游戏的规则。 二、需求分析 贪吃蛇游戏是一个小型益智游戏,它可以锻炼人们的反应能力,尤其是在开发人的智力方面,很受人们的欢迎。本组该次小游戏程序设计包含二维数组、鼠标操作及图形化函数等方面知识。具体需求概

要如下: 1.初始化游戏界面为700*600大小。 2.在HTML中用格子初始蛇长及蛇的位置,用上、下、左、右控制方向进行游戏。游戏过程中,每吃到一次食物蛇身增加一格,分数加10分。 3.蛇头咬到蛇尾或蛇头接触边框,则停止游戏,显示累计分数,游戏结束。 三、运行环境 本程序对硬件配置要求不高,只需要设备支持HTML5即可。适合在笔记本、iPad、智能手机运行。 四、设计概要 1.初始化模块: 屏幕初始化,屏幕初始化用于显示游戏信息; 2.游戏界面模块: 设计灰色的边框,边框内用白色灰框格子填充作为游戏活动区域;3.游戏运行模块: 运用函数控制蛇长及食物的关系,并使用键盘控制方向,空格键暂停(继续)。 4.判断模块: 头咬到尾或头接触活动区域外围,则游戏结束,显示累计分数。

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()(游戏暂停函

基于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语言

《贪吃蛇游戏课程设计》报告

贪吃蛇游戏程序设计 一、课程设计任务 贪吃蛇小游戏程序设计 二、设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固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();//图形驱动 void Close();//图形结束 void DrawK();//开始画面 void GamePlay();//玩游戏的具体过程void GameOver();//游戏结束 void PrScore();//输出成绩 (2)主函数main( ) 主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序 void main()//主函数 { Init();//图形驱动 DrawK();//开始画面

贪吃蛇课设

唐山学院 一、设计题目、内容及要求 题目:贪吃蛇游戏程序设计 内容:游戏开始时弹出初始菜单,游戏者按任意键进入游戏。游戏者用←↓→↑键来控制蛇在游戏场景内运动,每吃到一个食物,游戏者得10分,分数累加结果会在计分板上显示;与此同时蛇身长出一节。当贪吃蛇的头部撞击到游戏场景边框或者蛇的身体时游戏结束,并显示游戏者最后得分。 要求:程序结构合理、算法准确、语法正确,并生成可执行文件。 C语言程序设计课程设计 题目贪吃蛇游戏程序设计 系(部) 信息工程系 班级电信4班 姓名康林林 学号4130220436 指导教师 2014年2 月24 日至 3 月7 日共 2 周 2014年3月7 日

二、要求的设计成果(课程设计说明书、设计实物、图纸等) 1. 课程设计说明书:课程设计说明书1份,不少于2000字。说明书中要包含需求分析、总体设计、详细设计以及主要的算法描述等内容。 2. 源代码:程序清单 三、进程安排 2.24-2.5:完成需求分析和程序总体设计。 2.26-2.27:完成数据录入、删除、修改、插入和浏览功能模块的设计。 2.28- 3.3:程序调试无误,生成可执行文件。 3.4-.5:撰写课程设计说明书初稿。 3.6-3.7:提交课程设计说明书、程序和数据。 四、主要参考资料 [1] 谭浩强,张基温.C语言程序设计教程(第3版)[M].北京:高等教育出版社, 2006 [2] 吕凤煮.C语言基础教程——基础理论与案例[M].北京:清华大学出版社, 2005 [3] 黄明、梁旭、万洪莉.C语言课程设计[M].北京:电子工业出版社,2006 [4] 郭宁,郑小玲.管理信息系统[M].北京:人民邮电出版社,2006 [5] 赵池龙,杨林,陈伟.实用软件工程[M].北京:电子工业出版社,2006指导教师(签名):教研室主任(签名): C语言程序设计课程设计任务书 课程设计成绩评定表

基于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作为游戏的主控制单元,按键识别模块中的每个按

C语言课程设计报告——贪吃蛇源程序

C 语言课程设计 (小游戏贪吃蛇的程序设计报告)

设计人: 班级: 201 年月号

目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点 3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试 1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一.概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C 语言技术为基础,使用Turbo C++3.0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1.1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的和那个发,技术和工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法和步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习和将来实际软件开发打下坚实的基础。 1.2 设计的任务和需要的知识点 1.2.1 课程设计主要完成的任务 1). 通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解和掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题和解决问题的能力。 1.2.2需要掌握和运用的知识点 1.2.3本次课程设计需要掌握和运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐和动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。

贪吃蛇游戏详细设计说明书

详细设计说明书 1 引言 1.1 编写目的 本说明书在概要设计的基础上,对贪吃蛇游戏的各模块、程序、子系统分别进行了实现层面上的要求和说明。软件开发小组的产品实现人员阅读和参考本说明进行代码的编写和测试。 本说明书预期的读者是软件开发小组的产品实现人员。 1.2 背景 说明: 系统名称:贪吃蛇游戏 任务提出者:手机策划人员 开发者:软件开发小组的产品实现人员 用户:NOKIA手机用户 运行该程序系统的计算中心:NOKIA手机芯片 1.3 定义 1.节: 一条蛇可以看成由许多正方形的“小格子”拼凑成,称作节。节是蛇身上最小的单位。 2.链表: 用来保存每一段的状态,链表的元素单位是节。且链表的第一个元素表示蛇的头部。 3.坐标系: 以左上角那点为(0,0),向右则x递增,向下则y递增。 1.4 参考资料 张海藩:《软件工程导论》第五版清华大学出版社 肖刚等:《实用软件文档写作》清华大学出版社

2 程序系统的组织结构 2.1每个模块和子程序的名称、标识符: 1Ground类: 1)private int TYPE; 2)public int[][] rocks=new int[Global.WIDTH][Global.HEIGHT]; 3)public void setGround(int type){} 根据不同的Type值将rocks的不同下标的元素设为1,其他元素为0。 4)public boolean isSnakeEatRock(Snake snake){} 判断蛇头的所在的位置在数组rocks中的值是否为1,如果是1,则表示蛇吃 到了石头,返回TRUE,否则返回FALSE。 5)public Point getPoint(){} 产生一组随机数(x,y),是食物的坐标 6)public void drawMe(Graphics g){} 将数组rocks中值为1的元素填充为石头颜色。 2Snake类: 1)public static int x,y; 2)private int oldDirection,newDirection; 用于判断newDirection和oldDirection是否为相反方向,用于选取有效方向。 3)private Point oldTail; 用于判断蛇头是否和蛇身的某个节点的坐标重合,即蛇是否吃到自己。 4)public LinkedList body=new LinkedList(); 5)public void die(){} 设置变量life=FALSE;使控制进程的条件为假,进程结束。 6)public void move(){} 实现蛇身沿着蛇头的轨迹移动 7)public void changeDirection(int direction){} 根据方向键,改变蛇头的x、y的值,即改变方向 8)public void drawMe(Graphics g){}//把属于蛇的格子画出来 9)private class SnakeDriver implements Runnable{}//蛇不停走动 3Food类: 1)public void drawMe(Graphics g){} 根据产生的一组随机坐标,在其坐标处画出食物 4Controller类: 功能:处理按键事件及鼠标点击事件,处理逻辑。根据不同的情况向Snake,Food,Ground发出不同的命令。 实现接口snakeMoved,蛇每移动一步,就要判断一次,蛇是否吃到石头、是否吃到自己,是的话就snake.die()并停止计时;不是则不进行任何操作。如果吃到食物,就要加分、重画食物、蛇身加长。 实现(N)NewGame功能、(E)Exit功能、(R)Resume功能、(L)LowLevel功能、(H)HighLevel功能、(P)Pause功能。 5GamePanel类: 功能:画出Snake,Food,Ground,并实现重新显示

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

电气与信息工程学院 单片机课程设计报告 设计题目:基于单片机的贪吃蛇设计 2016 年11月22 日 一、设计任务及要求 基本功能: 制作一个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左右,电压过大将会彻底损坏。

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

贪吃蛇小游戏需求分析

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

“贪吃蛇”游戏需求分析 一、需求分析: 贪吃蛇游戏是一个小型益智游戏,它可以锻炼人们的反应能力,尤其是在开发人的智力方面,很受人们的欢迎。本组该次小游戏程序设计包含二维数组、鼠标操作及图形化函数等方面知识。 具体需求概要如下: 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.流程图(函数调用关系图)

java贪吃蛇课程设计

1设计目的 1.1背景 近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。JBuilder是Borland公司用于快速开发Java应用的一款优秀的集成开发环境,它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的接受和认可。 “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。 本文在介绍Java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了详细地介绍。首先,分析了开发本游戏软件的可行性,重点分析本设计所采用的技术的可行性。其次,从游戏主界面等几方面,分析了本游戏的功能需求;从可使用性和安全性方面分析了属性需求。然后,进行了游戏的概要设计和详细设计,这也是本文的重点。概要设计给出二个功能模块的主框架以及六个类模块的函数调用关系;详细设计介绍了Java2标准运行环境的配置,重点给出各个类模块的程序流程图以及UML图,列表介绍了各个类包含的变量、使用的方法,展示了游戏的界面。为了保证程序代码的正确性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。 1.2目标 本软件是针对贪吃蛇小游戏的JAVA程序,利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。 2 总体设计 2.1 设计思路 本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求: (1) 利用方向键来改变蛇的运行方向。 (2) 空格键暂停或继续游戏,并在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。 2.2 设计说明 本系统共包括1个java源文件和7个类文件。

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

贪吃蛇游戏策划书(第四组) 贪吃蛇游戏设计文档 一.概述 本设计主要围绕贪吃蛇游戏展开。众所周知,贪吃蛇游戏一直以来是比较流行的。传统的贪吃蛇游戏功能比较少,对蛇的控制仅限于向左转和向右转,而现在的贪吃蛇游戏已经发展的相当好;具有更多的功能和友好的界面。例如,最近流行的的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的屏幕大小如何,该游戏总是能获得最佳的显示 效果。

相关文档
最新文档