基于51单片机的贪吃蛇游戏
基于51单片机的宠物自动喂食器毕业设计

基于51单片机的宠物自动喂食器毕业设计一、背景介绍宠物自动喂食器是一种可以根据预设的时间和食物量自动给宠物投食的设备。
在现代社会,越来越多的人选择养宠物作为伴侣,然而工作繁忙的人们往往无法按时给宠物投食,因此宠物自动喂食器应运而生。
本设计旨在利用51单片机的特点,设计一款低成本、易操作的宠物自动喂食器,以解决宠物饲养者们的难题。
二、设计目标1. 实现按照设定的时间自动投食的功能;2. 提供人性化的操作界面,方便用户设定投食时间和食物量;3. 保证投食器的安全性,避免食物过多或堵塞情况的发生;4. 保证投食器的稳定性和可靠性,确保长时间稳定运行。
三、设计思路1. 初步构想本设计拟采用51单片机作为控制中心,利用其稳定性和成本低廉的特点,对宠物自动喂食器进行控制和运行。
利用按键和液晶显示屏构建用户友好的操作界面,方便用户进行时间和食物量的设定。
引入步进电机和传感器来控制投食器的投食量和检测食物的情况,以确保投食器的稳定性和安全性。
2. 具体方案(1)硬件设计方案采用51单片机作为控制核心,利用按键和液晶显示屏构建操作界面,引入步进电机和传感器来控制投食器的投食量和检测食物的情况。
整个设计依托于51单片机的IO口实现各个功能的控制。
(2)软件设计方案利用C语言编程,通过51单片机的编程实现按照设定时间自动投食的功能,同时设计人性化的操作界面进行时间和食物量的设定。
利用传感器和步进电机的数据进行检测和控制,保证投食器的稳定性和安全性。
四、实施过程1. 硬件搭建首先进行硬件搭建,将51单片机、按键、液晶显示屏、步进电机和传感器进行连接和固定。
通过面包板和导线连接各个组件,确保电路正常通电。
2. 软件编程其次进行软件编程,利用C语言编写程序,实现按照设定的时间自动投食的功能,设计人性化的操作界面进行时间和食物量的设定,并利用传感器和步进电机的数据进行检测和控制。
3. 调试和测试最后进行调试和测试,对整个系统进行全面检查和测试,保证投食器的稳定性和可靠性。
scratch贪吃蛇教程

scratch贪吃蛇教程贪吃蛇是一款经典的游戏,曾经风靡一时。
如今,在Scratch这样的编程平台上,我们可以轻松地用图形化编程方式制作出属于自己的贪吃蛇游戏。
下面,我将为大家详细介绍Scratch贪吃蛇游戏的制作过程。
首先,我们需要创建一些角色和舞台。
在Scratch中,角色可以是动物、人物或物体。
我们需要创建蛇、食物和墙壁这三个角色。
接下来,我们来为蛇添加一些脚本,使它能够移动和吃食物。
我们可以使用Scratch提供的积木块来编写脚本。
首先,我们需要让蛇追踪玩家的指令,并根据指令改变自己的方向。
然后,我们可以使用循环来让蛇一直移动,直到游戏结束。
当蛇吃到食物时,我们需要让蛇增长一个身体长度,并在舞台中随机生成新的食物。
然后,我们来为食物添加一些脚本,使其能够在舞台中随机移动。
我们可以使用Scratch提供的广播功能来随机生成食物的位置。
当蛇吃到食物时,我们可以广播一个消息,在接收到消息的食物角色中,修改自己的位置。
最后,我们需要为游戏添加一些附加功能,如游戏开始和结束的界面、分数计算、碰撞判断等。
我们可以使用Scratch提供的事件积木块来实现这些功能。
当游戏开始时,我们可以显示一个开始界面,并等待玩家点击开始按钮。
当蛇撞到自己的身体或墙壁时,游戏结束。
我们需要在这些情况下,显示一个游戏结束的界面,并停止游戏的进行。
同时,我们还可以根据蛇吃到的食物数量来计算分数,并在游戏界面中显示。
通过以上步骤,我们已经完成了Scratch贪吃蛇游戏的制作。
当你点击开始按钮,游戏就会开始。
你可以通过键盘上的方向键来控制蛇的移动方向,使其吃到尽可能多的食物。
当蛇撞到自己的身体或墙壁时,游戏就结束了,你可以看到你的分数和游戏结束的提示。
总结来说,用Scratch制作贪吃蛇游戏是一项简单而有趣的任务。
通过这个项目,你可以掌握基本的图形化编程知识,同时也能提高逻辑思维和问题解决能力。
无论你是初学者还是有一定编程经验的人,用Scratch制作贪吃蛇游戏都是一个不错的选择。
贪吃蛇小游戏

贪吃蛇小游戏
贪吃蛇是一款经典的小游戏,目标是控制蛇吃到尽可能多的食物,同时避免碰到自己的身体或墙壁。
游戏的规则和玩法如下:
1. 游戏目标:控制蛇吃到尽可能多的食物,使蛇的身体变得更长,同时避免碰到自己的身体或墙壁。
2. 游戏规则:
- 蛇的身体由一系列相连的方块组成,初始时蛇只有一个方块。
- 蛇每次移动一步,可以向上、下、左、右四个方向移动。
- 当蛇吃到食物时,身体会增长一个方块,食物会重新生成在地图上的随机位置。
- 如果蛇的头部碰到自己的身体或墙壁,游戏结束。
- 游戏难度会逐渐增加,蛇的移动速度会加快。
3. 游戏术语和技巧:
- 头部:蛇的前端,用于移动和吃食物。
- 身体:蛇的中间部分,由多个方块组成。
- 尾部:蛇的最后一节身体,用于增长身体长度。
- 食物:蛇需要吃的目标,吃到后身体会增长。
- 墙壁:游戏地图的边界,蛇碰到墙壁会导致游戏结束。
- 技巧:掌握蛇的移动方向和速度,避免碰到自己的身体或墙壁。
尽量利用地图上的空间,不要让蛇陷入死胡同。
4. 创造性和想象力:
- 尝试不同的策略和方法,例如选择最短路径吃到食物,或者围绕地图边缘移
动以减少碰撞的风险。
- 观察地图上的食物分布,选择最优的吃食物路径。
- 想象自己是一条蛇,体验蛇的移动和吃食物的感觉,让游戏更加有趣和挑战。
通过以上的规则和玩法,读者可以完全理解贪吃蛇小游戏,并能够充分享受游
戏的乐趣。
同时,读者也可以根据自己的创造性和想象力尝试不同的策略和方法,使游戏更具挑战性和乐趣。
flash游戏:贪吃蛇制作过程

flash游戏:贪吃蛇制作过程其实整个游戏一共要解决几个问题。
1。
如何让蛇根据键盘的方向移动?2。
如何让食物随机分布?3。
如何让蛇碰到食物的时候食物消失蛇身加长?4。
如何移动框外或者碰到蛇身就就GAME OVER。
先说第一个问题。
1。
如何让蛇根据键盘的方向移动?先将复杂的问题简单化。
就一个MC而言。
我们如何通过键盘移动呢?新建MC。
并将起命名成 snakehead(蛇头)然后在新建一层。
命名成AS层。
在帧上写上 function onEnterFrame(){//以帧的频率调动以下代码if (Key.isDown(65)) {//如果键盘按下去的时候让snakehead命名的MCx 轴坐标减10 snakehead._x-=10; } if (Key.isDown(68)) { snakehead._x+=10; } if (Key.isDown(87)) { snakehead._y-=10; } if(Key.isDown(83)) { snakehead._y+=10; } }下面来讲将一些主要的知识点:function onEnterFrame(){这是什么意思?他的意思就是FLASH一秒种走过多少帧他一秒就执行多少吃里面的代码。
我们用他来随时检测键盘上的按钮是不是被按下。
key.isDown(68)有是什么意思?他的意思就是说Key就代表键盘的意思。
isDown就是说。
键盘上的键被按下。
(68)就是指什么键了。
这里的68是 ASCII 键控代码值不清楚的朋友可以查一下FLASH 的帮助。
通过以上的讲应该可以明白了用键盘怎么控制影片裁剪的移动了吧。
复制出来的蛇的身体。
在检测碰状的时候不需要检测蛇的身体是否与食物碰状。
只检测蛇头是否和食物碰状。
我在解释下这个语句吧。
if (_root.snakehead.hitTest(_root["mcfood"+j])) {//判断蛇是否和食物碰到了n++;removeMovieClip(_root["mcfood"+j]);zynum += 10;j++;mcfoodAdd();}将其翻译成中文便于理解。
MCS51单片机原理与应用-焊接实验

单片机开发板焊接实验
学习目标
熟悉电路板焊接基本流程 掌握电路板焊接基本技能
焊接准备
准备焊接工具
烙铁、焊锡丝、松香、镊子、放大镜等
准备电路装配图
电路装配图是电子元件的布局图
准备元件
元件清单
焊接原则
按功能模块焊接:
电源电路,振荡电路,UART电路(下载), 复位等
按器件高低大小焊接:
先焊接较低器件:电阻、电容、二极管、三极 管; 再焊接较高器件:连接器、IC插座、按键等
RS232电路焊接过程-2
• MAX232的焊接
– 注意1号脚的位置,芯 片上豁口的方向 – 在一个对角的焊盘上加 上焊锡,这里是8号脚 – 放上芯片,芯片上的1 号脚位置标志是一个凹 下去的圆点
RS232电路焊接过程-3
• 把芯片的引脚和焊盘 对齐,固定8号引脚 • 用电烙铁加热焊锡丝 固定16号引脚 • 一定要使芯片的引脚 和焊盘对齐
电源电路焊接过程-8
正常工作状态
焊接顺序
• • • • • • • • • • • 电源电路焊接 C11->C6->IC插座->晶振 RS232电路的焊接 LED:D1->D2 复位电路 Switch:SW1->SW2->SW3->SW4 电阻的焊接 三极管的焊接:Q1->..->Q8 排阻的焊接 LED点阵焊接 4*4键盘、限流电阻焊接
RS232电路的原理图
RS232电路PCB图
• 焊接顺序 • C8->C7->C10->C5->C4>C9->U2->J1
RS232电路焊接过程-1
• 按照电源电路部分电 阻电容的焊接方法, 焊接电容C10->C5->C4>C9->C8->C7 • 焊接顺序,按照上面 的顺序逐个焊接 • 焊接要保证焊接质量, 是焊点有光泽,没有 毛刺
毕业设计(论文)-基于单片机的俄罗斯方块游戏[管理资料]
![毕业设计(论文)-基于单片机的俄罗斯方块游戏[管理资料]](https://img.taocdn.com/s3/m/be6bf68931b765ce0408146f.png)
基于单片机实现的俄罗斯方块游戏MCU based Russia block game摘要本设计是通过AT89S52单片机来实现俄罗斯方块游戏的设计,使用C语言进行编程,并通过Proteus来进行仿真。
本设计要实现的基本功能是:应用按键来控制方块的变换与移动;消除一行并计分;消除多行额外奖励记分,方块堆满时结束游戏等俄罗斯方块的基本功能。
单片机在手持娱乐设备上的应用具有非常大的潜力,它能将其带入到一个新的阶段。
为了解决外部电路图,必须充分了解所用液晶的显示方法和单片机的外部接口功能,和所需要处理的逻辑关系;还要理解LCD液晶的控制原理,来通过数据端口和控制端口来实现画面在液晶上面的显示。
程序则要求对外部电路了解的情况下完成自己所需要的功能,并将所要完成的功能用编程语言的形式来实现。
然后通过Protues仿真实现通过外部按键来控制各种不同图形的方块来玩游戏,并且实现记录分数和通过过关数来改变方块下降的速度。
最后将程序下载至AT89S52单片机并进行实际运行,实际运行表明,本设计可以实现基本的游戏功能,达到预期的目的。
关键词:AT89S52;C语言;Proteus仿真;LCD液晶ABSTRACTThis design is achieved through the AT89S52 microcontroller Tetris game design, programming using C language, and carried out by proteus simulation.The design to achieve the basic functions are: application buttons to control the box, change and movement; eliminate line and scoring; eliminate multi-line incentive points, the game ends when the box filled with basic functions such as Tetris. MCU in the application of handheld entertainment devices have great potential, it can be brought to a new stage. In order to solve the external circuit, we must fully understand the liquid crystal display method and external interface MCU features, and the need to address the logical relationship; also understand that the principle of LCD liquid crystal control to a data port and control port to achieve the above the LCD screen display.Program requires knowledge of the external circuit where they need to complete the function and the function to be completed in the form of programming language used to achieve. Simulation then protues buttons to control an external box to play a variety of graphical games, and achieve record number of scores and the relationship had to change the speed of the module down. Finally, the program downloaded to AT89S52 MCU and the actual operation, the actual operation indicate that this design can achieve basic game functions, to achieve the desired purpose.Key Words:AT89S52; C language; Proteus simulation; LCD liquid cryst目录1绪论 (1)课题背景 (1)电子游戏及其分类 (1)电子游戏发展现状 (2)电子游戏国外发展现状 (2)电子游戏国内发展现状 (3)2整体设计方案 (5)系统的核心部分单片机 (5)单片机的选择 (5)AT89S52引脚功能描述 (7)晶振特性 (9)液晶显示模块 (10)液晶显示控制驱动器HD61202的特点 (10)液晶显示控制驱动器HD61202的引脚功能 (10)液晶显示控制驱动器HD61202的指令系统 (11)HD61202的软件设计 (12)JM12864J的电路结构特点 (15)JM12864J的应用 (15)键盘电路 (17)3系统程序的设计 (17)俄罗斯方块驱动流程图 (17)俄罗斯方块所有绘图工作流程图 (18)俄罗斯方块中按下键的流程图 (19)俄罗斯方块所有绘图工作流程图 (20)4系统仿真 (22)PROTUES软件介绍 (22)Keil软件介绍 (22)俄罗斯方块系统PROTUES仿真 (24)5实物的制作与调试 (26)电路的焊接 (26)系统性能测试与功能说明 (27)结论 (28)参考文献 (29)附录1:C语言程序 (29)附录2:电路原理图 (59)附录3:英文资料及中文翻译 (60)致谢 (76)1绪论计算机系统的发展已明显地朝三个方向发展;这三个方向就是:巨型化,单片化,网络化。
贪吃蛇软件实践报告(2篇)
第1篇一、项目背景随着计算机技术的发展和普及,编程教育越来越受到重视。
为了提高学生的编程能力和逻辑思维,许多高校和培训机构都开设了编程实践课程。
贪吃蛇游戏作为经典的编程学习项目,因其简单易懂、趣味性强而广受欢迎。
本报告旨在记录一次基于Python语言的贪吃蛇游戏软件实践过程,分析项目实现中的关键技术,并总结实践经验。
二、项目目标1. 掌握Python编程基础,熟悉Python图形界面库Tkinter的使用。
2. 理解贪吃蛇游戏的基本原理,包括游戏逻辑、数据结构、事件处理等。
3. 培养编程实践能力,提高问题解决能力。
4. 实现一个功能完善、界面友好的贪吃蛇游戏软件。
三、项目实施1. 需求分析贪吃蛇游戏的核心功能包括:- 游戏界面:显示蛇的移动轨迹、食物、分数等信息。
- 蛇的移动:通过键盘或鼠标控制蛇的上下左右移动。
- 食物生成:在游戏区域内随机生成食物。
- 分数统计:记录玩家得分,并在游戏结束后显示最高分。
- 游戏结束:当蛇碰到墙壁或自身时,游戏结束。
2. 技术选型- 编程语言:Python- 图形界面库:Tkinter- 数据结构:列表(用于存储蛇的身体节点)3. 项目实现(1)初始化游戏界面使用Tkinter库创建游戏窗口,设置窗口大小和标题。
在窗口内创建一个画布(Canvas),用于绘制蛇、食物和分数等信息。
```pythonimport tkinter as tk创建游戏窗口root = ()root.title("贪吃蛇游戏")canvas = tk.Canvas(root, width=400, height=400)canvas.pack()```(2)绘制蛇和食物定义蛇和食物的形状、颜色等属性,使用画布的create_rectangle()方法绘制。
```pythondef draw_snake(snake):for x, y in snake:canvas.create_rectangle(x, y, x+10, y+10, fill="green")def draw_food(food):canvas.create_oval(food[0], food[1], food[2], food[3], fill="red")```(3)控制蛇的移动使用键盘事件绑定函数bind(),监听键盘按键事件,根据按键方向更新蛇的移动方向。
基于python贪吃蛇专科毕业设计任务书
基于python贪吃蛇专科毕业设计任务书篇名:深入解析基于Python的贪吃蛇专科毕业设计任务书一、引言在计算机科学领域,Python语言一直以其简洁、灵活和强大的特性受到广泛关注和应用。
而贪吃蛇游戏作为经典的小游戏之一,不仅具有娱乐性,更是计算机科学教学中常用的案例之一。
基于Python的贪吃蛇专科毕业设计任务书成为了研究和实践的热门话题。
二、任务书的深度评估1. 任务书概述基于Python的贪吃蛇专科毕业设计任务书是一项涉及到编程技术、游戏设计和计算机科学理论的综合性任务。
它涵盖了从游戏规则到界面设计,从算法逻辑到程序实现的方方面面,是一项对学生综合能力的全面考察。
2. 任务书的内容(1)游戏规则设计在设计基于Python的贪吃蛇游戏时,需要考虑到游戏规则的合理性和趣味性。
如何设置蛇的移动规则、食物的生成规则,以及碰撞和得分规则等,都需要学生进行深入思考和实践。
(2)界面设计一个成功的游戏除了逻辑严谨的核心玩法,还需要有美观友好的界面设计。
学生需要在任务书中充分考虑如何设计简洁清晰的游戏界面,包括开始界面、游戏界面和结束界面等。
(3)程序实现最核心的部分当然是程序实现了。
基于Python语言,学生需要将游戏规则和界面设计转化为可运行的程序。
这既考验了他们对Python语法和编程技术的掌握,也考验了他们对游戏逻辑的理解和实践能力。
3. 任务书的考察目标基于Python的贪吃蛇专科毕业设计任务书在一定程度上考察了学生在编程技术、游戏设计和计算机科学理论方面的综合能力。
通过这个任务书,学生将不仅仅能够熟练掌握Python语言的应用,还可以培养自己对游戏设计和程序实现的综合思考能力。
三、任务书的广度评估1. 学术意义作为一项专科毕业设计任务书,基于Python的贪吃蛇设计不仅能够丰富学生的编程实践经验,还能够促进对计算机科学理论的深入理解。
通过这个任务书,学生不仅仅可以学习Python语言的具体应用,还能够窥探计算机科学背后的算法逻辑和程序设计理念。
一种适用于踏步机的游戏设计
一种适用于踏步机的游戏设计唐军【摘要】为了使大众能方便地在室内进行健身,根据市场上已有的踏步器为蓝本,设计一款适用于踏步器的游戏系统,它溶健身娱乐为一体,适合现代人的生活方式.该系统由三部分组成:踏步器、传感装置和计算机.传感装置由两个霍尔传感器、MAX232串口芯片和STC89C52单片机组成,霍尔传感器用来感应玩家踏板动作,单片机用于计算左、右步频并发送步频,串口芯片将左、右步频数据传给计算机;计算机负责游戏软件的运行和显示.游戏软件的设计原理是:左、右步频的平均值可用来决定游戏主角的移动速度,步频差决定它的移动方向.改编了\"贪吃蛇\"游戏作为测试软件,在游戏中添加了运动控制和健身功能,经过测试能达到预期的设计效果.该游戏系统具有制作成本低、操控方便、通用性强等特点,具备一定的市场开发潜力.【期刊名称】《计算机系统应用》【年(卷),期】2019(028)002【总页数】7页(P118-124)【关键词】踏步机;游戏设计;健身;传感器设计【作者】唐军【作者单位】安徽省体育科学技术研究所,合肥230001【正文语种】中文随着我国经济飞速发展,人们的生活方式发生明显的变化.体力活动减少,高脂、高蛋白饮食,环境污染,使得人们身体的亚健康状态显得日益突出.健身逐渐成为人们日常生活中必需的内容,然而绝大多数城市人蜗居在高楼大厦的狭小的空间里,想得到理想的户外活动空间比较困难,加之空气污染和交通拥堵,户外健身并非健康、安全,在室内进行健身是一个经济的选择.电子游戏作为一种现代娱乐方式已经深入人们生活,传统的电子游戏用的键盘、鼠标、游戏手柄、手触屏作为输入设备,控制游戏的进程,玩家玩久了就会出现因久坐、姿势不当而产生的疾病(如颈椎病、腰椎间盘突出等).一些把模拟器和健身器材与计算机结合而设计出来的电子游戏相继出现,如跳舞毯、跑步机[1]、动感单车游戏[2]等,还有近年来十分流行体感游戏,如任天堂的Wii、索尼的PlayStation Move、微软的kinect[3].还有用kinect与跑步机相结合设计的游戏系统[4].以各种运动器材和体感设备作为计算机的输入设备,设计出的电子游戏能克服上述弊病,它们集健身和娱乐为一身,符合现代人健身要求,必将成为电子游戏发展的趋势.踏步机是近年来较为流行的运动器械,它结构小巧且造价低廉,以它为游戏输入设备设计一款电子游戏将其运用到家庭健身具有重大现实意义和市场价值.1 踏步机游戏的硬件设计方案1.1 总体设计原理本文所设计的适用于踏步机电子游戏系统有三个部分组成: 踏步机、传感装置、计算机(如图1所示).踏步机(7)供玩家按游戏要求完成踏步动作;传感装置(2)由两个霍尔传感器、MAX232串口芯片和STC89C52单片机组成,用来感应玩家踏步动作并计算左、右步频,然后将左、右步频数据传给计算机(1);计算机负责游戏软件的运行和显示.霍尔传感器(5、6)安放在踏步机踏板的下方,感应磁片放在踏板的外侧边,当玩家踏下脚踏板时外侧边的磁片经过霍尔传感器,传感器产生低电平信号,霍尔传感器的信号线连接在STC89C52单片机数据端口.单片机接收信号并计算步频,步频即每分钟踏步的次数,以右脚为例,当右脚踏下时,右踏板经过右侧传感器,由单片机记下此时刻,记为t1,当右脚再次踏下时,右踏板经过传感器,再由单片机记下第二次时刻,记为t2,这样可由单片机计算右步频(R),R=60/(t2-t1),即每分钟踏步多少次.单片机的数据输出端口连接串口数据传输芯片MAX232,并将步频数据送至MAX232,MAX232再将步频数据传到与计算机.计算机接收到左右步频,即可计算步频差,利用步频和步频差来设计游戏软件,让它们来驱动游戏主角运动.具体方案是: 左、右步频的平均值可用来决定游戏主角的移动速度;步频差(左步频减去右步频的数值)在预设正负阈值范围内时,游戏主角运动方向不变;如果步频差大于正阈值,使游戏主角向左拐;如果步频差小于负阈值,使游戏主角向右拐;步频差阈值可根据情况自主设定.有这三种方向就可使得游戏主角实现在游戏中左、右、前、后运动,向后运动可使用连续左拐或者右拐.图1 踏步机游戏系统结构图1.2 传感装置的设计方案与实现本文的传感器装置主要由下列元件组成: 霍尔传感器为乐清市墨尔电气有限公司产品,M8系列NJK5001C.单片机为STC89C52,STC公司产品,属于MCS-51系列.串口芯片MAX232为德州仪器公司生产.根据总体设计方案和芯片说明书连接各芯片管脚,用PROTEL99绘制PCB电路图,如图2.(1)霍尔传感器信号线输入,霍尔传感器为NPN常闭型,有3条外接线,VCC、OUT、GND.VCC接5 V电源,GND接地,VCC与OUT(信号输出线)之间接1 KΩ电阻,两个OUT线分别接在单片机P2.1和P2.0端口上.(2)STC89C52单片机,使其在最小系统下运行,VCC接入+5 V电源,GND接地,18、19管脚接11.0592 M晶振,晶振两端分别接两个30pF电容.(3)MAX232;(4)串口(DB9).关于单片机与MAX232的连接,MAX232的T1IN(11脚)接单片机串行发送端TXD(P3.1,11脚),MAX232的R1OUT(12脚)接单片机串行接收端RXD(P3.0,10脚).MAX232的T1OUT(14脚)接DB9的3脚.MAX232的R1IN(13脚)接DB9的2脚.图2 传感器装置电路原理图1.3 传感装置的程序编写根据游戏的总体设计方案和单片机所起的作用,即计算左右步频并发送步频数据,单片机程序应有3个功能,初始化单片机的设置、计算步频、发送数据.初始化函数完成单片机的设置,主要包括两个定时器的设置,一个用于计时,在timer0函数实现,另一个用于设置波特率,在initial函数实现.计算步频函数包括计算步频和发送步频数据两个功能,流程图如图3所示.本文使用Keil Version3软件,用C语言编写单片机程序[5].图3 计算步频和发送数据函数N-S图2 踏步机游戏软件的编写方案2.1 游戏软件的策划本文的游戏编写的目的主要是检验踏步机游戏系统的可行性、操控性,在游戏中实现健身功能,因此可以采用敏捷的开发方式和原型设计的思路进行游戏设计,从已有的游戏选择一种,将其内容进行扩展,加入一些新的元素[6].踏步机游戏可定性为体育竞速类游戏,鉴于本文踏步机游戏软件编写的目的,本文改写了经典游戏“贪吃蛇”,贪吃蛇游戏是人们熟悉的电子游戏,玩家测试起来容易上手,程序编写也较简单,用它来测试整个游戏系统较为方便.2.2 踏步机贪吃蛇游戏的设计本文用Visual Studio 6.0作为软件开发工具,VC6.0编写贪吃蛇游戏[7].游戏总体上分5个功能模块,如图4所示.根据以上所述的功能可将游戏分5个类进行设计.(1)主游戏类,主要负责各类的调用和主界面的显示.利用VC6.0中MFC的对话框模式建立一个CSnakeNew工程,VC6.0自动生成CSnakeNewDlg和CSnakeNewApp两个类.(2)游戏规则类,在工程中定义为CRule类.(3)串口类,主要负责串口设置、打开和步频的接收.在工程中加入Microsoft Communication Control,自动生成CMSComm串口类,调用类中函数可实现串口通信.(4)帮助对话框类,显示游戏的帮助文档.(5)蛇类,主要实现蛇身移动、增加及移动方向,蛇身、果实的更新和显示.在工程中添加CSnake类,它公有继承CWnd类.各类的关系如图5所示,贪吃蛇游戏中CSnake类继承CWnd类,它们之间是泛化关系;同时它与CRule类、CSnakeNewDlg类是依赖关系;CSnakeNewDlg类与CMSComm类也是依赖关系.图4 贪吃蛇功能结构图5 踏步机贪吃蛇游戏主要类的类图时序图6显示了各类对象之间在游戏运行阶段相互调用和信息传递关系.玩家调用主对话框类CSnakeNew Dlg的对象dlg的方法OnOpen()打开串口;接着dlg调用CMSComm类对象m_ctrlComm一系列方法初始化串口,包括SetCommPort()设置端口号,SetPort Open()打开端口,SetSetting()设置端口参数,SetInput Mode()取回传入数据的方式,SetRThreshold()设置接受缓冲区每接受到字符个数,SetInputLen()设置当前接收区数据长度,GetInput()先预读缓冲区以清除残留数据;玩家再次调用dlg中的方法OnGame(),调用CSnake类m_snk的GameStart(),同时返回模式参数;玩家做踏板运动,传感器接收信号并计算步频频与计算机通信,系统调用OnOnCommMscomm(),此方法调用m_ctrlComm的方法GetCommEven()和GetInput(),判断串口事件和读缓冲区数据,桨频数据将被接收;在OnOnCommMscomm()方法中调用m_snk中贪吃蛇游戏模式响应方法GameAction(),这个方法分别调用GameMove(),在游戏模式中控制蛇身移动;在Game Move()中会调用ReDrawBody()重绘蛇身;ReDraw Body()发送系统消息进行窗口重绘,调用CSnake类中的OnPaint()方法进行游戏画面的重绘.图6 踏步机贪吃蛇游戏时序图2.3 踏步机贪吃蛇游戏主要类的设计2.3.1 游戏规则类游戏规则类的判断游戏状态模块主要算法设计如下:(1)当蛇身每移动一步时,就对蛇头部的坐标进行判断.(2)如果已经与游戏界面的边界或者和蛇身向量中的坐标重合,说明贪吃蛇已经碰到了墙壁或者自己身体,提示游戏结束.(3)设置游戏为结束状态.2.3.2 串口类利用VC++6.0中所提供的串口控件,在工程中加载CMSComm类,调用类中函数可实现串口通信.蛇身动作函数应放在OnOnCommMscomm1()中调用,即可实现踏板动作与蛇身移动的一致.显示平均步频、显示得分语句也可放在此函数中. 2.3.3 蛇类蛇类的设计是整个软件的关键环节,蛇类具体包含数据、函数如下:蛇类的头文件CSnake.h蛇类主要完成以下功能:(1)果实的随机生成和显示果实必须随机生成,果实出现的范围不要在游戏窗口边缘,这样可以降低游戏难度.果实不能与蛇身重合,即果实的坐标不能与蛇身的坐标相同.Snake.cpp中void CSnake::InitFoods()初始化果实,如图7.图7 果实生成程序N-S图(2)贪吃蛇游戏功能游戏功能是让玩家感受到健身与游戏的结合,从游戏中得到有效的锻炼.先在游戏中探索到自己的有氧运动强度范围,可记录下心率和体力感知度[8](对照RPE表获得)对应的上下限步频,然后在游戏中设定上下限步频,平均步频数值决定蛇身颜色的变化,玩家低于下限步频踏板时,蛇身变蓝,高于上限步频,蛇身变红,在上下步频之间蛇身是绿色.玩家在游戏中让蛇身保持绿色就是在一定步频范围内踏板,也就是在做有氧踏板运动,如图8所示.当玩家经过一段时间的游戏,如果感到踏板比较轻松,而且比较容易得到高分,就可以设定更高的上下限步频,这样通过再一轮的踏步游戏,便可以提高玩家的有氧运动能力.图8 游戏界面图蛇身的方向由左、右步频差来控制,例如可以规定步频差等于右步频减去左步频:步频差阈值可以自由设定,数值小,拐弯就容易.例如可以规定阈值为10,当步频差(m_nDifRate)大于10,设定蛇身向左拐,m_nDifRate<-10时,蛇身向右拐,-10 <= m_nDifRate<=10时蛇身保持原方向前进.在编程时要增加一个变量保存先前蛇身移动方向.蛇身移动的快慢由平均步频决定,如式(1),具体移动步数由式(2)计算得出,蛇身每步即移动一个像素,移动多少步数由平均步频、m、n决定,m和n可根据蛇身大小、游戏窗口的大小、游戏的节奏自主设定.Snake.cpp中void CSnake::GameAction()是蛇身动作函数,它控制游戏模式中蛇身移动,详细设计过程如图9所示.其中for循环语句为for(int i=0;i<移动步数公式所得出值;i++),表示蛇身移动步数.3 结语踏步机游戏设计是否成功关键在于它的交互性,实现良好交互性关键是游戏的操控性,这是从玩家操控踏步机器进而控制贪吃蛇的移动体现出来.操控性是指游戏的易用性和操作的准确性,准确性是指,按照传感器以及游戏软件所设定的规格所能达到的操作结果与玩家实际操作游戏时所预判的结果,在程度上的差异.操控性能的好坏评价,一方面在于设计,另一方面在于玩家熟练掌握技巧所需要的时间以及他们的主观体验.本游戏易用性方面主要表现在玩家在做拐弯动作时有点难度,玩家必须一只脚踏板快,另一只踏板慢,这样才能产生步频差较大,形成蛇的转向.本文的建议是,在做拐弯动作时把一只踏板停住,快速踏另一只踏板,这样就容易形成一个步频数值就会远大于另一个步频.测试者要经过一些练习才能掌握好.基于运动器材作为游戏的输入设备具有稳定性好、精确度高、成本低,从而设计的电子游戏具有操作感、精准感较强,模拟运动体验好等特点.由于它们本身就是健身器材,因此更容易设计出健身游戏软件与之配套.基于体感游戏手柄设计体育类游戏,或者基于Kinect摄像头,通过深度识别和人体骨骼追踪技术,实现人机交互,设计的游戏,易产生误差,游戏操作起来有时会产生延迟和操作失败,玩家的游戏体验与该体育项目的实际体验相差较大.本文所用的踏步机为市场上普通款式,传感器的安装并不需要改变对原踏步机结构,具有设计简单,安装方便,成本低廉等优点,有较好的市场前景.就普适性而言,本文的传感器装置的设计思想也可以运用在其他运动器械上,例如具有双桨的划船机、椭圆机等,只要有两个运动部件,类似于踏步机,都适用以上原理,即计算左右运动频率,利用左右频率差和平均频率来驱动游戏主角运动.图9 蛇身动作N-S图参考文献【相关文献】1 耿彬.跑步机体感游戏的设计与实现[硕士学位论文].长沙:湖南大学,2010.2 李波.健身单车体感游戏设计与实现[硕士学位论文].长沙:湖南大学,2010.3 张诗潮,钱冬明.体感技术现状和发展研究.华东师范大学学报(自然科学版),2014,(2): 41-49,126.4 黄静,郎波,张志稳,等.基于Kinect跑步机系统.计算机系统应用,2016,25(9): 113-118.5 郭天祥.新概念51单片机C语言教程-入门、提高、开发拓展全攻略.北京: 电子工业出版社,2009.74-76.6 何青.游戏程序设计教程.北京: 人民邮电出版社,2011.17-20.7 王浩.Visaul C++游戏开发经典案例详解.北京: 清华大学出版社,2010.263-302.8 曲绵域,于长隆.实用运动医学.北京: 北京大学医学出版社,2003: 78.。
贪吃蛇游戏课程设计报告
贪吃蛇游戏课程设计报告贪吃蛇游戏程序设计一、课程设计任务贪吃蛇小游戏程序设计二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C 语言中所学的知识,合理的运用资料,实现理论与实际相结合。
(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩三、需求分析3.1、程序功能贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
3.2、设计思想程序关键在于透露表现蛇的图形及蛇的挪动。
用一个小矩形快透露表现蛇的一节身材,身材每长一节,增加一个矩形块,蛇头用俩节透露表现。
挪动时必须从蛇头动手下手,以是蛇不克不及向相反的偏向挪动,假如不按随便键,蛇自行在当火线向上前移,但按下有效偏向键后,蛇头朝着该偏向挪动,一步挪动一节身材,以是按下有效偏向键后,先肯定蛇头的位置,尔后蛇的身材随蛇头挪动,图形的完成是从蛇头新位置动手下手画出蛇,这时分,因为未清屏的缘故原由,原先的蛇的位置和新蛇的位置差一个单元,以是看起来蛇多一节身材,以是将蛇的末了一节用背景色掩盖。
食品的呈现与消失也是画矩形块和掩盖矩形块。
为了便于理解,界说两个布局体:食品与蛇。
3.3、流程图动手下手初始化界面和蛇身游戏者按键选择放置食物蛇开始运动蛇吃到食?Y蛇长大N蛇死亡?Y继续?N退出界面YN四、设计的具体实现(1)函数定义函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用#define N 200#define M 200#include"graphics.h"#include<XXX>#include<XXX>#include<string.h>#include<XXX>#include<dos.h>#include<XXX>#include <windows.h>#define LEFT 97//A#define RIGHT 100//D#define DOWN 115//S#define UP 119//W#define Esc 0x011bint i,key;int score=0;int gamespeed=250;//游戏速度可根据实际情况自行调解struct Food{int x;//食品的横坐标int y;//食物的纵坐标intyes;//判别是否要呈现食品的变量}food;//食品的布局体struct XXX{int x[M];int y[M];int node;//蛇的节数XXX的移动方向int life;//蛇的生命,透露表现在世,1 透露表现出生}XXX;void Init();//图形驱动void Close();//图形结束void DrawK();//开始画面XXX();//玩游戏的具体过程XXX();//游戏结束void PrScore();//输出成就(2)主函数main( )主函数是程序的支流程,首先界说利用到的常数、全局变量及函数原型申明,然后初始化图形体系,挪用函数DrawK()画出动手下手画面,挪用函数GamePlay(),即玩游戏的详细进程,游戏结束后挪用Close()封闭图形体系,结束程序void main()//主函数{Init();//图形驱动DrawK();//开始画面GamePlay();//玩游戏的详细进程Close();//图形结束}void Init()//图形驱动{int gd=DETECT,gm;initgraph(&gd,&gm," ");/*此处为turboc的路径,读者可以根据自己的电脑而改*/cleardevice();}(3)画界面函数DrawK( )主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。