安卓贪吃蛇课程设计报告
《贪吃蛇游戏课程设计》报告资料整理
![《贪吃蛇游戏课程设计》报告资料整理](https://img.taocdn.com/s3/m/772cd21e2b160b4e767fcfc2.png)
四、
(
函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用
#define N 200
#define M 200
#include"graphics.h"
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<iostream.h>
snake.life=0;//蛇活着
snake.direction=1;//方向往右
snake.x[0]=100;snake.y[0]=100;//舌头坐标
snake.x[1]=110;snake.y[1]=100 ;
snake.node=2;//蛇的节数
PrScore();//输出分数
while(1)//可重复玩游戏,按ESC键结束
#include<dos.h>
#include<conio.h>
#include <windows.h>
#define LEFT 97//A
#define RIGHT 100//D
#define DOWN 115//S
#define UP 119//W
#define Esc 0x011b
int i,key;
cleardevice();
}
(
主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。
void DrawK()//开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙
Android贪吃蛇课程设计报告
![Android贪吃蛇课程设计报告](https://img.taocdn.com/s3/m/29cc1ebf02020740bf1e9ba9.png)
XXXX学院计算机科学系《Android程序设计》课程设计报告题目:贪吃蛇专业:计算机科学与技术!班级: B11计科班学号: 0姓名:凌波微步Q Q :25指导教师:,2014年6月,目录第一章绪论 (2)游戏简介 (2)开发目的及意义 (3)开发环境及工具 (3)第二章需求分析 (4)游戏界面分析 (4)游戏角色分析 (4)—游戏控制分析 (4)第三章总体设计 (5)系统功能模块层次图 (5)运行机制 (6)贪吃蛇功能流程图 (7)第四章详细设计与实现 (9)SnakeActivity类 (9)MyTile类 (10):NextActivity类 (18)SysApplication类 (19)界面设计 (20)第五章测试 (26)功能测试 (26)测试结果 (27)第六章结论 (27)第一章绪论@游戏简介贪吃蛇游戏是一款手机游戏,同时也是一款比较需要耐心的游戏。
贪吃蛇游戏是一条蛇,不停地在手机屏幕上游走,吃在手机屏幕上出现的食物。
当蛇吃掉1个食物后会变长,并且吃完食物时食物会消失,并立即随机生成1个新的食物,只要蛇头碰到屏幕四周或者碰到自己的身子,蛇就立即毙命。
开发目的及意义通过本次课程设计,了解android软件的开发过程,熟悉并掌握JAVA语言,程序关键在于表示蛇的图形及蛇的移动。
用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用一节表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动。
意义是方便人们在休闲时通过玩手机游戏获得一点快乐,同时锻炼自己的大脑。
开发环境及工具在Window8下进行,采用eclipse开发工具,基于安卓操作系统。
环境搭建:1. JDK安装[2. Eclipse安装3. Android SDK安装4. ADT安装创建AVD-第二章需求分析游戏界面分析操作界面应该人性化设计,提示玩家按什么按键开始游戏,开始游戏之后,在游戏界面中,以坐标的形式对整体界面进行划分,将界面划分为网格,还应设计蛇的样式,食物的样式和墙的样式,在蛇吃到食物后的样式,还有游戏结束时的界面显示,游戏结束后,要显示所得的分数。
贪吃蛇游戏课程设计
![贪吃蛇游戏课程设计](https://img.taocdn.com/s3/m/46019860590216fc700abb68a98271fe910eaf8a.png)
贪吃蛇游戏课程设计一、课程目标知识目标:1. 学生能理解贪吃蛇游戏的基本原理,掌握游戏设计中涉及的坐标、方向和移动等概念。
2. 学生能运用所学的编程知识,使用合适的数据结构和算法实现贪吃蛇游戏的主体功能。
3. 学生了解游戏设计中的用户界面设计原则,并能将其应用于贪吃蛇游戏的界面设计。
技能目标:1. 学生掌握运用编程语言进行游戏设计的基本技巧,提高编程实践能力。
2. 学生能够运用逻辑思维和问题分析能力,解决游戏设计过程中遇到的问题。
3. 学生通过团队协作,提高沟通能力和项目协作能力。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣,增强学习信息技术的积极性。
2. 学生在游戏设计过程中,培养创新意识和审美观念,提高对美的追求。
3. 学生通过课程学习,认识到编程对生活的影响,激发将所学知识应用于实际生活的意识。
课程性质:本课程为信息技术学科选修课程,适用于有一定编程基础的学生。
学生特点:学生具备基本的计算机操作能力,对编程有一定了解,对游戏设计感兴趣。
教学要求:结合学生特点,注重实践操作,鼓励学生创新和团队协作,提高学生的编程能力和审美观念。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 游戏设计基本原理:介绍游戏设计的基本概念、流程和原则,结合贪吃蛇游戏案例分析游戏设计中的核心要素。
- 课本章节:第三章“游戏设计概述”- 内容:游戏设计流程、游戏类型、游戏设计原则2. 编程语言和工具:复习巩固编程基础,介绍贪吃蛇游戏所需的基本编程知识和工具。
- 课本章节:第二章“编程基础”- 内容:变量、数据类型、运算符、流程控制、函数、数组3. 数据结构和算法:分析贪吃蛇游戏中涉及的数据结构(如链表、数组)和算法(如坐标计算、碰撞检测)。
- 课本章节:第四章“数据结构与算法”- 内容:链表、数组、坐标计算、碰撞检测4. 游戏界面设计:介绍用户界面设计原则,指导学生设计贪吃蛇游戏的界面。
Android贪吃蛇课程设计报告41494
![Android贪吃蛇课程设计报告41494](https://img.taocdn.com/s3/m/4fd494be852458fb770b56f5.png)
XXXX学院计算机科学系《Android程序设计》课程设计报告题目:贪吃蛇专业:计算机科学与技术班级: B11计科班学号: 110807510姓名:凌波微步Q Q :2446872525指导教师:2014年6月目录第一章绪论 (2)1。
1游戏简介 (2)1.2开发目的及意义 (3)1.3开发环境及工具 (3)第二章需求分析 (4)2。
1游戏界面分析 (4)2.2游戏角色分析 (4)2.3游戏控制分析 (4)第三章总体设计 (5)3.1系统功能模块层次图 (5)3.2运行机制 (6)3。
3贪吃蛇功能流程图 (7)第四章详细设计与实现 (9)4。
1 SnakeActivity类 (9)4.2 MyTile类 (10)4.3 NextActivity类 (18)4.4 SysApplication类 (19)4.5界面设计 (20)第五章测试 (24)5。
1功能测试 (24)5.4测试结果 (25)第六章结论 (25)第一章绪论1。
1游戏简介贪吃蛇游戏是一款手机游戏,同时也是一款比较需要耐心的游戏。
贪吃蛇游戏是一条蛇,不停地在手机屏幕上游走,吃在手机屏幕上出现的食物。
当蛇吃掉1个食物后会变长,并且吃完食物时食物会消失,并立即随机生成1个新的食物,只要蛇头碰到屏幕四周或者碰到自己的身子,蛇就立即毙命.1.2开发目的及意义通过本次课程设计,了解android软件的开发过程,熟悉并掌握JA V A语言,程序关键在于表示蛇的图形及蛇的移动。
用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用一节表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动。
意义是方便人们在休闲时通过玩手机游戏获得一点快乐,同时锻炼自己的大脑.1.3开发环境及工具在Window8下进行,采用eclipse开发工具,基于安卓2.2操作系统。
安卓贪吃蛇课程设计报告材料
![安卓贪吃蛇课程设计报告材料](https://img.taocdn.com/s3/m/dc8c0312852458fb770b56b0.png)
滨江学院智能手机程序设计题目安卓智能手机贪吃蛇游戏设计院系滨江学院计算机系专业信息工程学生周盈伟学号指导教师高超二0 一四年六月一日目录第一章绪论 (3)1.1开发背景 (3)1.1.1安卓系统简介 (3)1.1.2游戏简介 (3)1.2开发目的及意义 (4)1.3开发环境及工具 (4)第二章需求分析 (5)2.1游戏界面分析 (5)2.2游戏角色分析 (5)2.3游戏控制分析 (5)2.4 可行性分析 (6)第三章总体设计 (7)3.1系统功能模块层次图 (7)3.2运行机制 (8)3.3贪吃蛇功能流程图 (10)第四章详细设计与实现 (12)4.1 TiltView类 (12)4.2 SnakeView类 (14)4.3 界面设计 (16)第五章测试 (20)5.1游戏功能测试 (20)5.2游戏控制测试 (20)5.3游戏界面测试 (20)5.4测试结果 (20)第六章结论 (21)第一章绪论1.1开发背景1.1.1安卓系统简介安卓系统作为新兴的手机操作系统,在问世不久,变风靡全球,占领手机操作系统里很大的市场份额,与苹果,诺基亚三分天下,Android是基于Linux开放性核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。
早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。
底层Linux核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。
1.1.2游戏简介1976年,Gremlin平台推出了一款经典街机游戏Blockade。
游戏中,两名玩家分别控制一个角色在屏幕上移动,所经之处砌起围栏。
角色只能向左、右方向90度转弯,游戏目标保证让对方先撞上屏幕或围栏。
安卓贪吃蛇课程设计
![安卓贪吃蛇课程设计](https://img.taocdn.com/s3/m/95ba89734a73f242336c1eb91a37f111f0850d72.png)
安卓贪吃蛇课程设计一、课程目标知识目标:1. 学生理解并掌握安卓应用开发的基础知识,包括活动(Activity)、视图(View)和意图(Intent)的使用。
2. 学生掌握贪吃蛇游戏的逻辑和算法,包括蛇的移动、食物的生成和碰撞检测。
3. 学生了解如何在安卓应用中实现用户界面设计,使用布局(Layout)和控件(Control)。
技能目标:1. 学生能够独立创建安卓项目,并设置虚拟设备进行调试。
2. 学生能够编写代码实现贪吃蛇游戏的核心功能,包括蛇的自动移动、方向控制以及食物的随机生成。
3. 学生能够利用安卓开发工具进行问题调试,解决开发过程中遇到的问题。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发探究精神和创新意识。
2. 培养学生团队合作意识,学会在团队中发挥个人优势,共同解决问题。
3. 增强学生面对困难的勇气和毅力,培养良好的编程习惯和解决问题的方法。
分析课程性质、学生特点和教学要求:1. 课程性质:实践性、综合性、创新性。
2. 学生特点:具备一定的计算机操作能力,对编程有一定了解,对游戏开发有浓厚兴趣。
3. 教学要求:注重理论与实践相结合,关注学生个体差异,提供个性化的指导,确保学生能够将所学知识应用于实际项目中。
二、教学内容1. 安卓应用开发基础:- 活动的生命周期及状态管理- 视图和布局的使用,包括线性布局、相对布局等- 控件的使用,如按钮(Button)、文本框(TextView)等- 意图(Intent)的使用及数据传递2. 贪吃蛇游戏逻辑与算法:- 蛇的移动逻辑及方向控制- 食物的随机生成及碰撞检测- 游戏分数记录及结束条件3. 安卓界面设计与实现:- 游戏界面的布局设计- 蛇和食物的控件定制- 用户交互界面的实现,如按钮控制蛇的方向4. 教学大纲与进度安排:- 第一周:安卓应用开发基础学习,了解活动、视图、控件和意图的使用- 第二周:学习贪吃蛇游戏逻辑,编写移动算法和方向控制- 第三周:实现食物的生成和碰撞检测,设计游戏界面- 第四周:整合游戏功能,进行调试与优化教材章节关联:- 《Android基础教程》第3章:Android应用界面设计- 《Android基础教程》第4章:Android组件和事件处理- 《Android游戏开发实战》第2章:游戏开发基础及游戏循环- 《Android游戏开发实战》第5章:游戏界面绘制与用户交互教学内容确保科学性和系统性,结合教学大纲和教材章节,使学生能够逐步掌握安卓贪吃蛇游戏的开发技能。
贪吃蛇课程设计报告
![贪吃蛇课程设计报告](https://img.taocdn.com/s3/m/e5a0abc2d15abe23482f4d3f.png)
本科课程设计贪吃蛇游戏设计摘要 (3)Abstract (3)一.详细设计 (4)1.属性解释 (4)2.初始化坐标: (4)3.调用线程 (4)4.具体功能实现: (5)4.1.移动功能的实现: (5)4.2.吃食物功能实现: (6)4.3.判断游戏是否结束的功能实现: (8)4.4.画图方法的实现 (9)4.5.监听键盘动作: (10)5.界面的设计: (11)5.1进入程序界面设计 (11)5.2第2个界面的设计: (12)5.3第3个界面设计: (12)6.把程序植入手机中 (13)二.字符设备驱动程序实现 (13)三.总结: (14)四.参考文献: (14)五.致谢 (15)摘要程序核心思想:运行程序首界面(进入游戏,退出游戏)进入游戏后选择难度(简单,普通,高难)根据不同的难度设置相应的属性。
进入游戏界面。
首先初始化蛇的坐标,食物的坐标,和障碍物的坐标。
然后获取当前屏幕的大小为将来的边界判断做准备。
然后创建并执行线程。
线程基本流程:判断是否是暂停阶段,如果没有暂停就执行:eatFood();move(direction); repaint();如果游戏结束了就重新游戏或者退出。
AbstractCore of the process: first running the program interface (into the game, withdraw from the game) into the game after the difficult choice of (simple, ordinary, highly difficult) depending on the difficulty of setting the corresponding attribute. Into the game interface. First initialize the coordinates of the snake, coordinates food, and the coordinates of obstructions. And access to the size of the current screen for the future of the border to prepare for judgement. And then create and execution threads. Thread the basic process: determine whether the stage is suspended, if not the moratorium on the implementation of: eatFood (); move (direction); repaint (); game to an end if the game or out on the re.一.详细设计1.属性解释用1个2维数组snake[200][2]存放蛇身坐标,第2维是0的时候代表横坐标,为1的时候为纵坐标。
贪吃蛇软件实践报告(2篇)
![贪吃蛇软件实践报告(2篇)](https://img.taocdn.com/s3/m/43671dc7b1717fd5360cba1aa8114431b90d8eae.png)
第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(),监听键盘按键事件,根据按键方向更新蛇的移动方向。
贪吃蛇安卓课程设计
![贪吃蛇安卓课程设计](https://img.taocdn.com/s3/m/cd1c13079a6648d7c1c708a1284ac850ac02047e.png)
贪吃蛇安卓课程设计一、课程目标知识目标:1. 学生能理解贪吃蛇游戏的原理和基本规则。
2. 学生能掌握安卓开发环境的基本操作和界面设计。
3. 学生能了解和运用Java编程语言实现贪吃蛇游戏的功能。
技能目标:1. 学生能运用安卓开发工具,独立设计和开发一款简易的贪吃蛇游戏。
2. 学生能通过调试和优化,提高贪吃蛇游戏的性能和用户体验。
3. 学生能运用所学的编程知识,解决开发过程中遇到的问题。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发他们的创新精神和探究欲望。
2. 培养学生的团队协作能力,学会在项目中分工合作、共同解决问题。
3. 培养学生面对挑战时的积极态度,提高他们克服困难的信心和决心。
本课程针对初中年级学生,结合他们好奇心强、动手能力强、善于合作等特点,设计具有挑战性和趣味性的贪吃蛇游戏开发课程。
课程旨在让学生在掌握编程知识的同时,提高实践能力和创新能力,培养他们良好的团队合作精神。
通过本课程的学习,学生能够将所学的编程知识运用到实际项目中,从而提升他们的综合素质。
二、教学内容1. 安卓开发环境搭建:介绍Android Studio的安装与配置,熟悉开发工具的使用。
- 章节关联:课本第二章《Android开发环境搭建》2. 简单的界面设计:学习并应用XML布局文件,设计贪吃蛇游戏的界面。
- 章节关联:课本第三章《Android界面设计基础》3. Java编程基础:回顾和巩固Java基本语法,为游戏编程打下基础。
- 章节关联:课本第四章《Java编程基础》4. 贪吃蛇游戏逻辑实现:学习游戏循环、碰撞检测、分数统计等核心功能。
- 章节关联:课本第五章《Android事件处理》与第六章《Android动画与游戏开发》5. 游戏调试与优化:介绍日志输出、性能分析及优化方法,提高游戏体验。
- 章节关联:课本第七章《Android性能优化》6. 项目实践:分组进行项目实践,将所学知识综合运用到贪吃蛇游戏的开发中。
Android贪吃蛇课程设计分析报告
![Android贪吃蛇课程设计分析报告](https://img.taocdn.com/s3/m/7536d7918bd63186bdebbc4d.png)
姓名指导教师2015年12月20日湖南工程学院课程设计任务书课程名称计算机系统综合实训任务完成日期2016年1月11日任务书一、实训的内容1.贪吃蛇游戏开发(1)设计内容:在手机屏幕上设计一个贪吃蛇游戏,屏幕四周被绿色苹果包围,中间有贪吃蛇和随机产生的苹果,贪吃蛇的头是黄色的,身子是红色的。
玩家按上、下、左、右键盘控制贪吃蛇在屏幕上向上、注意,不能改变为当前方向的相反方向,例如当前方向是向下时,按向上的方向键是无效的。
(2) 设计要求:按任务书的设计要求进行撰写。
其中游戏核心数据结构设计要求为:主要是界面控制信息和逻辑控制信息, 界面控制信息主要包含两个部分:贪吃蛇的位置信息,存储贪吃蛇的具体位置,另外一个就是闪烁的食物的位置。
而逻辑控制信息主要包含三个部分:贪吃蛇的移动方向、闪烁控制以及程序暂停控制。
碰撞和处理,包括贪吃蛇和食物的碰撞和处理,贪吃蛇和四周的碰撞和处理,贪吃蛇的头和身的碰撞和处理,二、综合实训时间安排具体时间及要求安排如下:5、总结;6、附件(所有程序的源代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)附:课程实训报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
目录一、课程实训目的及要求 01.1、课程实训目的 01.2、课程实训要求 0二、设计思路 (1)2.1、需求分析 (1) (1) (1)一、课程实训目的及要求1.1、课程实训目的计算机系统综合实训能培养学生独立进行资料收集,综合运用所学的多门课程知识,培养分析问题和解决问题能力。
验证和巩固充实所学理论知识,加深对相关内容的理解,能运用所学知识为社会服务,在实训中学习和锻炼,增长才干。
本次实训采用项目制,要求学生进一步理解和掌握软件工程的方法和技术,培养操作界面应该人性化设计,提示玩家按什么按键开始游戏,开始游戏之后,在游戏界面中,以坐标的形式对整体界面进行划分,将界面划分为网格,还应设计蛇的样式,食物的样式和墙的样式,在蛇吃到食物后的样式,还有游戏结束时的界面显示,游戏结束后,要显示所得的分数。
程序设计实训报告 贪吃蛇游戏
![程序设计实训报告 贪吃蛇游戏](https://img.taocdn.com/s3/m/a4c8cc3f0722192e4536f6fd.png)
课程设计报告学院、系:专业:学生姓名:学号:设计题目:贪吃蛇游戏起迄日期:指导教师:发任务书日期: 2012年6月10日附录:系统源代码#define N 200#include "graphics.h" #include "stdio.h"#include "stdlib.h" #include "dos.h"#define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800#define Esc 0x011bint i,key,cor,lev;int score = 0;int gamespeed;struct Food{int x, y;int yes;}food;struct Snake{int x[N], y[N];int node, direction, life; }snake;void Init();void Close();void DrawK();void GameOver();void GamePlay();void PrScore();void SelectLevel();void SelectColor();void main(){SelectLevel();SelectColor();Init();DrawK();GamePlay();Close();}void SelectLevel(){for(i=0;i<10;i++)printf(" ");for(i=0;i<50;i++)printf("*");printf("\n");for(i=0;i<10;i++)printf(" ");printf("*");for(i=0;i<48;i++)printf(" ");printf("*");printf("\n");for(i=0;i<10;i++)printf(" ");printf("*");printf(" Please select the level! *\n"); for(i=0;i<10;i++)printf(" ");printf("*");printf(" 1:Easy 2:Normal 3:Hard *\n"); for(i=0;i<10;i++)printf(" ");printf("*");for(i=0;i<48;i++)printf(" ");printf("*");printf("\n");printf(" ");for(i=0;i<50;i++)printf("*");printf("\n");printf("Please selcet:");scanf("%d",&lev);switch(lev){case 1: gamespeed=50000;break; case 2: gamespeed=100000;break; case 3: gamespeed=150000;break; default: break;}}void SelectColor(){for(i=0;i<10;i++)printf(" ");for(i=0;i<50;i++)printf("*");printf("\n");for(i=0;i<10;i++)printf(" ");printf("*");for(i=0;i<48;i++)printf(" ");printf("*");printf("\n");printf(" ");printf("*");printf(" Please select the color! *\n"); for(i=0;i<10;i++)printf(" ");printf("*");printf(" 1:Black 2:Green 3:Gray *\n"); for(i=0;i<10;i++)printf(" ");printf("*");for(i=0;i<48;i++)printf(" ");printf("*");printf("\n");for(i=0;i<10;i++)printf(" ");for(i=0;i<50;i++)printf("*");printf("\n");printf("Please selcet:");scanf("%d",&cor);switch(cor){case 1: cor=0;break;case 2: cor=10;break;case 3: cor=8;break;default: break;}}void Init(){int gd = DETECT, gm;initgraph(&gd, &gm, "c\\tc");cleardevice();}void DrawK(){setbkcolor(cor);setcolor(11);setlinestyle(SOLID_LINE, 0, THICK_WIDTH); for( i=50; i<=600; i+=10){rectangle(i, 40, i+10, 49);rectangle(i, 451, i+10, 460);}for( i=40; i<=450; i+=10){rectangle(50, i, 59, i+10);rectangle(601, i, 610, i+10);}}void GamePlay(){randomize();food.yes = 1;snake.life = 0;snake.direction = 1;snake.x[0] = 100; snake.y[0] = 100;snake.x[1] = 110; snake.y[1] = 100;snake.node = 2;PrScore();while(1){while(!kbhit()){if(food.yes==1){food.x = rand()%400+60;food.y = rand()%350+60;while(food.x%10!=0){food.x++;}while(food.y%10!=0){food.y++;}food.yes = 0;}if(food.yes==0){setcolor(GREEN);rectangle(food.x, food.y, food.x+10, food.y-10); }for( i=snake.node-1; i>0; i--){snake.x[i] = snake.x[i-1];snake.y[i] = snake.y[i-1];}switch(snake.direction){case 1: snake.x[0] += 10; break;case 2: snake.x[0] -= 10; break;case 3: snake.y[0] -= 10; break;case 4: snake.y[0] += 10; break;}for( i=3; i<snake.node; i++){if(snake.x[i] == snake.x[0] && snake.y[i] == snake.y[0]){GameOver();snake.life = 1;break;}}if(snake.x[0]<55 || snake.x[0]>595 || snake.y[0]<55 || snake.y[0]>455){GameOver();snake.life = 1;}if(snake.life == 1) break;if(snake.x[0] == food.x && snake.y[0] == food.y){setcolor(0);rectangle(food.x, food.y, food.x+10, food.y-10);snake.x[snake.node] = -20;snake.y[snake.node] = -20;snake.node ++;food.yes = 1;score += 10;PrScore();}setcolor(4);for( i=0; i<snake.node; i++){rectangle(snake.x[i], snake.y[i], snake.x[i]+10, snake.y[i]-10);}delay(gamespeed);setcolor(0);rectangle(snake.x[snake.node-1], snake.y[snake.node-1],snake.x[snake.node-1]+10, snake.y[snake.node-1]-10);}if(snake.life==1) break;key = bioskey(0);if(key==Esc) break;else if(key==UP && snake.direction!=4)snake.direction = 3;else if(key==RIGHT && snake.direction!=2)snake.direction = 1;else if(key==LEFT && snake.direction!=1)snake.direction = 2;else if(key==DOWN && snake.direction!=3)snake.direction = 4;}}void GameOver(){cleardevice();PrScore();setcolor(RED);settextstyle(0, 0, 4);outtextxy(200, 200, "GAME OVER" ); getch();}void PrScore(){char str[10];setfillstyle(SOLID_FILL, YELLOW); bar(50, 15, 220, 35);setcolor(6);settextstyle(0, 0, 2);sprintf(str, "score:%d", score); outtextxy(55, 20, str);}void Close(){getch();closegraph();}。
贪吃蛇课程设计
![贪吃蛇课程设计](https://img.taocdn.com/s3/m/2a57db767275a417866fb84ae45c3b3567ecddec.png)
基于Java的游戏“贪吃蛇”的设计和实现一系统描述1.1 本设计的目的和意义贪吃蛇游戏一款非常经典的手机游戏, 因为它比较简单有趣, 无论老少都比较适合。
贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。
贪吃蛇游戏的设计比较复杂, 它涉及面广、牵涉方面多, 如果不好好考虑和设计, 将难以成功开发出这个游戏。
在这个游戏的设计中, 牵涉到图形界面的显示与更新、数据的收集与更新, 并且在这个游戏的开发中, 还要应用类的继承机制以及一些设计模式。
因此, 如何设计和开发好这个贪吃蛇游戏, 对于提高Java开发水平和系统的设计能力有极大的帮助。
在设计开发过程中, 需要处理好各个类之间的继承关系, 还要处理各个类相应的封装, 并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。
正是因为如此, 本次毕业设计的目的在于学习Java程序设计基本技术, 学习用JBuilder开发Java程序的相关技术, 熟悉游戏“贪吃蛇”的需求, 熟悉项目开发的完整过程。
学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程, 熟练地掌握Java程序设计的基本技术和方法, 熟练地掌握JBuilder环境的使用方法, 培养起初步的项目分析能力和程序设计能力。
1.2 设计的主要内容贪吃蛇游戏设计与实现, 主要分为以下二个模块: 游戏主界面模块游戏控制模块。
在此只实现游戏的游戏主界面模块、游戏控制模块。
并且只是实现开始、暂停、退出等功能。
1.3设计要达到的目标游戏主界面模块:游戏的主界面是进入游戏后, 能够给玩家第一感官的部分, 主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、新生方块的预览、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。
从很大程度上决定了玩家对游戏的兴趣问题, 因此, 游戏的主界面应该力求美观, 爽心悦目。
游戏控制模块:这个模块是游戏的中心环节, 主要完成控制游戏的开始、暂停、退出等功能。
贪吃蛇游戏课程设计论文
![贪吃蛇游戏课程设计论文](https://img.taocdn.com/s3/m/c125e9b418e8b8f67c1cfad6195f312b3069eb52.png)
贪吃蛇游戏课程设计论文一、教学目标本课程旨在通过学习贪吃蛇游戏的设计与制作,让学生掌握以下知识目标:1.了解贪吃蛇游戏的基本规则和原理;2.熟悉游戏设计的流程和思路;3.掌握Python编程语言的基本语法和操作。
4.能够使用Python编程语言编写简单的游戏程序;5.能够运用贪吃蛇游戏的原理和设计方法,创作出属于自己的游戏作品;6.能够对游戏程序进行调试和优化,提高游戏的运行效果和用户体验。
情感态度价值观目标:1.培养学生的创新意识和团队合作精神;2.培养学生对编程和游戏的兴趣,激发学生主动学习和探索的热情;3.培养学生良好的编码习惯和解决问题的能力。
二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.贪吃蛇游戏的基本规则和原理;2.Python编程语言的基本语法和操作;3.游戏设计的流程和思路;4.贪吃蛇游戏的设计与制作;5.游戏程序的调试和优化。
6.第一周:介绍贪吃蛇游戏的基本规则和原理;7.第二周:学习Python编程语言的基本语法和操作;8.第三周:讲解游戏设计的流程和思路;9.第四周:实践贪吃蛇游戏的设计与制作;10.第五周:学习游戏程序的调试和优化方法。
三、教学方法为了达到课程目标,本课程将采用以下教学方法:1.讲授法:讲解贪吃蛇游戏的基本规则和原理,Python编程语言的基本语法和操作,游戏设计的流程和思路等理论知识;2.案例分析法:分析优秀的贪吃蛇游戏案例,引导学生理解游戏设计的要点和技巧;3.实验法:让学生动手实践,设计和制作属于自己的贪吃蛇游戏作品;4.讨论法:学生进行小组讨论,分享制作过程中的心得和经验,互相学习和交流。
四、教学资源为了支持教学内容和教学方法的实施,本课程将提供以下教学资源:1.教材:选用《Python编程:从入门到实践》等国内外优秀教材,为学生提供系统的编程知识;2.参考书:提供《游戏设计艺术》等参考书籍,帮助学生深入了解游戏设计的原理和方法;3.多媒体资料:制作课件、视频教程等多媒体资料,丰富学生的学习体验;4.实验设备:提供计算机、网络等实验设备,确保学生能够顺利进行实践操作。
贪吃蛇游戏设计实训报告
![贪吃蛇游戏设计实训报告](https://img.taocdn.com/s3/m/4c1f94496fdb6f1aff00bed5b9f3f90f76c64dd9.png)
一、摘要随着计算机技术的飞速发展,图形界面编程在计算机科学中占据着越来越重要的地位。
贪吃蛇游戏作为一款经典的益智游戏,不仅能够锻炼玩家的反应能力,还能培养编程思维。
本次实训以贪吃蛇游戏为背景,采用Java编程语言和Swing图形用户界面库进行设计,实现了游戏的基本功能,并对游戏性能进行了优化。
二、引言贪吃蛇游戏是一款简单易玩、老少皆宜的益智游戏。
玩家通过控制蛇的移动,吃掉食物使蛇身变长,同时躲避墙壁和自身,最终达到游戏目标。
本次实训旨在通过贪吃蛇游戏的设计与实现,提高学生的编程能力、图形界面设计能力和团队协作能力。
三、游戏设计1. 游戏界面设计游戏界面采用Swing图形用户界面库进行设计,主要包括以下部分:(1)游戏区域:用于显示蛇、食物和墙壁,采用JPanel组件实现。
(2)游戏菜单:包括开始游戏、重新开始、退出游戏等选项,采用JButton组件实现。
(3)游戏得分:显示当前得分,采用JLabel组件实现。
2. 游戏逻辑设计游戏逻辑主要包括以下部分:(1)蛇的移动:根据玩家输入的方向键控制蛇头的移动,实现蛇的实时更新。
(2)食物的生成:随机生成食物,当蛇头吃到食物时,蛇身变长,同时增加得分。
(3)墙壁和自身碰撞检测:当蛇头触碰到墙壁或自身时,游戏结束。
(4)游戏得分:根据蛇头吃到的食物数量计算得分。
四、关键技术实现1. 蛇的移动蛇的移动通过监听键盘事件实现。
在键盘事件监听器中,根据按键的方向更新蛇头的坐标,然后重新绘制蛇身。
2. 食物的生成食物的生成采用随机算法实现。
首先生成一个随机坐标,然后判断该坐标是否在游戏区域内,如果不在则重新生成。
3. 碰撞检测碰撞检测包括墙壁碰撞和自身碰撞。
在蛇头移动时,判断蛇头的坐标是否超出游戏区域边界,或者与自身坐标相同,若满足任一条件,则游戏结束。
4. 游戏得分游戏得分通过计算蛇头吃到的食物数量实现。
每吃到一个食物,得分加1。
五、性能优化1. 游戏速度优化:通过调整蛇的移动速度和食物生成的速度,使游戏节奏更加紧凑。
《贪吃蛇游戏课程设计》报告
![《贪吃蛇游戏课程设计》报告](https://img.taocdn.com/s3/m/76f2d7e2a417866fb94a8e72.png)
贪吃蛇游戏程序设计一、课程设计任务贪吃蛇小游戏程序设计二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。
(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩三、需求分析3.1、程序功能贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
3.2、设计思想程序关键在于表示蛇的图形及蛇的移动。
用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。
食物的出现与消失也是画矩形块和覆盖矩形块。
为了便于理解,定义两个结构体:食物与蛇。
3.3、流程图四、设计的具体实现(1)函数定义函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用#define N 200#define M 200#include"graphics.h"#include<stdlib.h>#include<stdio.h>#include<string.h>#include<iostream.h>#include<dos.h>#include<conio.h>#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;//食物的纵坐标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();//开始画面GamePlay();//玩游戏的具体过程Close();//图形结束}void Init()//图形驱动{int gd=DETECT,gm;initgraph(&gd,&gm," ");/*此处为turboc的路径,读者可以根据自己的电脑而改*/ cleardevice();}(3)画界面函数DrawK( )主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。
贪食蛇游戏实习报告
![贪食蛇游戏实习报告](https://img.taocdn.com/s3/m/470b443483c4bb4cf7ecd1a8.png)
贪吃蛇游戏开发一、需求分析1、该贪吃蛇设计主要具有吃食、暂停、开始以及重新开始游戏。
2、主要目标:本游戏实现贪吃蛇在制定空间去吃随机出现的方块。
游戏可以暂停,如不满意这一次游戏的成果还能重新开始游戏。
二、项目设计1、流程设计程序流程图2、游戏具体设计:(1) 蛇移动的实现蛇的移动方向主要受头结点控制,所以每次画蛇时只要把前一结点的值赋给后一节点即可。
当蛇头的移动方向向右时,y 值不变x 的值不断增加。
当蛇头的移动方向向左时,y 值不变x 的值不断减少。
当蛇头的移动方向向下时,y 值增加x 的值不变。
当蛇头的移动方向向上时,y 值减小x 的值不变。
(2) 蛇死亡的判断当蛇头的值与蛇身或与墙的值相等时,蛇即算死亡.(3)蛇到达边框时从另一端出现和传送的实现当蛇头的x 或y 值达到边框的最大或最小位置时相应的给x 或y 赋以边框的最小或最大值以实现当蛇到达边框时能从另一端出来,同理当蛇头的x,y 值等于传送点位置的值时将蛇头x,y 的值赋以被传送到位置的值,这样将实现蛇的传送功能。
三、项目实现①蛇身颜色、最大长度及速度int speed;//设置蛇的速度int maxLen;//设置蛇的最大长度②随机生成食物产生随机种子:qsrand(QTime().currentTime().msec());定义食物的坐标、形状及颜色:int mx = (qrand()%(w/20))*20;int my = (qrand()%(h/20))*20;food = new QLabel(this);food->move(mx,my);food->resize(20,20);//食物大小food->setAutoFillBackground(true);//设置食物自动填充背景颜色food->setFrameShape(QFrame::Box);//设置形状food->setFrameShadow(QFrame::Sunken);food->setPalette(QPalette(QColor(qrand()%255,qrand()%110,qrand()%255)));//改变调色板的颜色return food;③方向控制及按键事件处理方向控制:switch(d){case d_up:nheady-=speed;break;case d_down:nheady+=speed;break;case d_left:nheadx-=speed;break;case d_right:nheadx+=speed;break;}按键事件处理:void snake::keyPressEvent(QKeyEvent *f){if(f->key()==Qt::Key_Up){d=d_up;}else if(f->key()==Qt::Key_Down){d=d_down;}else if(f->key()==Qt::Key_Left){d=d_left;}else if(f->key()==Qt::Key_Right){d=d_right;}}④食物的显示与蛇吃食物食物显示:data.push_back(getFood());//将吃到的食物添加在蛇身之后timer = new QTimer();//初始化时钟timer->setInterval(400);//设置时钟周期timer->start();connect(timer,SIGNAL(timeout()),this,SLOT(move()));//传递信号food = getFood();food->show();蛇吃食物:if((nheadx==foodx)&&(nheady==foody)){data.push_back(food);food = getFood();food->show();}游戏截图1游戏截图2游戏截图3游戏截图4⑤游戏结束条件if(data.size()>=10){QMessageBox msg(this);msg.setText("game over!");msg.setStandardButtons(QMessageBox::Yes|QMessageBox::No);msg.show();if(msg.exec()==QMessageBox::Yes){this->close();}}四、总结经过10天的培训,让我进一步熟悉了Linux系统下命令的使用、文件的编写与调试,更熟悉了以前所学的C++语言,让我对我所学习的计算机更加了解喜欢,也更加希望自己能学好计算机方面的设计,去设计更多有意思的游戏。
贪吃蛇课程设计总结报告书
![贪吃蛇课程设计总结报告书](https://img.taocdn.com/s3/m/c1bb120903d8ce2f00662338.png)
贪吃蛇课程设计总结报告书
110200第7组组员:李轶萌刘浩赵鹏
一. 需求分析
(1)功能与数据需求:题目要求的功能(基本功能)与扩展功能
基本功能:贪吃蛇的蛇的移动(上下左右)随机出现食物蛇吃过后变长
记分功能撞到自己或边界就失败等基础的功能
扩展功能:难易度的选择背景音乐空格暂停功能容错功能(是否重新开始/结束游戏)
(2)开发环境Vc6.0
二.概要设计
(1)主要数据结构
(2)程序总体结构
(3)各模块函数说明
三详细设计
(1)主函数部分
(2)游戏部分
(3)判断分数,是否继续部分
四.测试图
五.应用程序功能的详细说明
规则:贪吃蛇在不首尾相碰且不碰边界的情况下,尽可能多的吃掉随机出现的食物,多吃多得分而益智的小游戏。
操作:上w下s左a右d 暂停空格退出或重新游戏肯定y 否定n
六.总结提高
(1)课程设计总结
(2)开发中遇到的问题和解决方法
开发之初,大家对这个程序都不是很了解,所以刚开始只追求把文件做出来,可以运行就可以了。
但是后来发现自己做出来的东西连自己都提不起兴趣,单纯只有基本功能功能,没有记分功能,也没有暂停等等,画片也很糟糕,大小比例也有些失调,被老师戏称为“贪吃蚂蚁”。
后来经过调试和自主创新,我们发现我们其实还是可以加入一些人性化的东西的。
(3)对自己完成课设完成情况的评价
附录:程序源代码。
软件课课程设计贪吃蛇
![软件课课程设计贪吃蛇](https://img.taocdn.com/s3/m/6d43029ff605cc1755270722192e453610665ba3.png)
软件课课程设计贪吃蛇一、教学目标本章节的教学目标分为三个维度:知识目标、技能目标和情感态度价值观目标。
1.知识目标:学生需要了解贪吃蛇游戏的基本原理和编程逻辑,理解软件开发的基本流程。
2.技能目标:学生能够使用编程语言独立编写并运行一个简单的贪吃蛇游戏,培养学生的编程能力和问题解决能力。
3.情感态度价值观目标:通过完成贪吃蛇游戏的项目,学生能够体验到编程的乐趣,增强对计算机科学的兴趣,培养学生的创新精神和团队合作意识。
二、教学内容本章节的教学内容主要包括贪吃蛇游戏的基本原理、编程逻辑、软件开发流程等方面的知识。
1.贪吃蛇游戏的基本原理:介绍贪吃蛇游戏的基本规则和机制,如游戏界面、角色控制等。
2.编程逻辑:教授学生使用编程语言编写贪吃蛇游戏的逻辑,包括角色移动、食物获取、游戏结束条件等。
3.软件开发流程:引导学生了解软件开发的基本流程,包括需求分析、设计、编码、测试等环节。
三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式。
1.讲授法:通过讲解贪吃蛇游戏的基本原理和编程逻辑,为学生提供理论知识的基础。
2.案例分析法:分析典型的贪吃蛇游戏案例,引导学生理解并运用编程逻辑解决问题。
3.实验法:学生通过动手编写代码并运行贪吃蛇游戏,培养学生的实际操作能力和问题解决能力。
四、教学资源本章节的教学资源包括教材、参考书、多媒体资料和实验设备等。
1.教材:提供相关章节的学习教材,为学生提供理论知识的基础。
2.参考书:推荐一些与贪吃蛇游戏编程相关的参考书籍,供学生深入学习和参考。
3.多媒体资料:通过视频、演示等 multimedia 资料,生动形象地展示贪吃蛇游戏的原理和编程逻辑。
4.实验设备:提供计算机等实验设备,让学生能够实际编写代码并运行贪吃蛇游戏。
五、教学评估本章节的评估方式包括平时表现、作业和考试三个部分,以全面、客观、公正地评估学生的学习成果。
1.平时表现:通过学生在课堂上的参与度、提问回答、团队合作等方面的表现,评估学生的学习态度和积极性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
滨江学院智能手机程序设计题目安卓智能手机贪吃蛇游戏设计院系滨江学院计算机系专业信息工程学生姓名周盈伟学号***********指导教师高超二0 一四年六月一日目录第一章绪论 (3)1.1开发背景 (3)1.1.1安卓系统简介 (3)1.1.2游戏简介 (3)1.2开发目的及意义 (4)1.3开发环境及工具 (4)第二章需求分析 (5)2.1游戏界面分析 (5)2.2游戏角色分析 (5)2.3游戏控制分析 (5)2.4 可行性分析 (6)第三章总体设计 (7)3.1系统功能模块层次图 (7)3.2运行机制 (8)3.3贪吃蛇功能流程图 (10)第四章详细设计与实现 (12)4.1 TiltView类 (12)4.2 SnakeView类 (14)4.3 界面设计 (16)第五章测试 (20)5.1游戏功能测试 (20)5.2游戏控制测试 (20)5.3游戏界面测试 (20)5.4测试结果 (20)第六章结论 (21)第一章绪论1.1开发背景1.1.1安卓系统简介安卓系统作为新兴的手机操作系统,在问世不久,变风靡全球,占领手机操作系统里很大的市场份额,与苹果,诺基亚三分天下,Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。
早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。
底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。
1.1.2游戏简介1976年,Gremlin平台推出了一款经典街机游戏Blockade。
游戏中,两名玩家分别控制一个角色在屏幕上移动,所经之处砌起围栏。
角色只能向左、右方向90度转弯,游戏目标保证让对方先撞上屏幕或围栏。
听起来有点复杂?其实就是下面这个样子:基本上就是两条每走一步都会长大的贪吃蛇比谁后完蛋,玩家要做的就是避免撞上障碍物和越来越长的身体。
更多照片、视频可以看Games D Base 的介绍。
Blockade 很受欢迎,类似的游戏先后出现在Atari 2600、TRS-80、苹果 2 等早期游戏机、计算机上。
但真正让这种游戏形式红遍全球的还是21年后随诺基亚手机走向世界的贪吃蛇游戏——Snake。
贪吃蛇游戏是一款老牌的手机游戏,同时也是一款比较需要耐心地游戏。
贪吃蛇游戏就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的食物,越吃越长。
只要蛇头碰到屏幕四周,或者碰到自己的身子,小蛇就立即毙命。
玩“贪吃蛇游戏”,难度最大的不是蛇长得很长的时候,而是开始的时候。
那时蛇身很短,看上去难度不大,却最容易死掉,因为把玩一条小蛇让人容易走神,失去耐心。
1.2开发目的及意义通过本次课程设计,了解android软件的开发过程,熟悉并掌握JA V A语言,HTML. 程序关键在于表示蛇的图形及蛇的移动。
用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。
食物的出现与消失也是画矩形块和覆盖矩形块。
为了便于理解,定义两个结构体:食物与蛇目的本程序实现主要技巧在于java语言的应用。
目的在于提高编程的水平。
1.3开发环境及工具采用eclipse开发工具,在windows xp下进行,基于安卓2.2操作系统。
环境搭建:1. JDK安装2. Eclipse安装3. Android SDK安装4. ADT安装创建A VD第二章需求分析2.1游戏界面分析首先应解决操作界面的问题,操作界面应该人性化设计,提示玩家当前游戏状态,何时开始,按什么按键开始游戏,开始游戏之后,在游戏界面中,以坐标的形式对整体界面进行划分,将界面划分为许多个小方格,还应设计蛇的样式,苹果的样式和墙的样式,在蛇吃到苹果后的样式,还有游戏结束或暂停时,界面的显示,游戏结束后,要显示所得的分数。
2.2游戏角色分析设置游戏贪吃蛇初始时由固定个小矩形块组成,并且,游戏中,要随机出现由单个矩形块构成的苹果,并且在设置苹果的时候,还要设置,不能使将要出现的苹果出现在蛇的身体之下,在蛇吃到苹果的时候,要将蛇的身体加长,随着游戏的进行,蛇移动的速度也要加快。
此外,要判定游戏成功与失败的条件,当蛇的头和尾相撞或者蛇的头部撞到了墙上,则游戏失败,此时游戏结束,界面显示所得分数,当累积分数达到一定标准则游戏成功。
另外蛇的移动原理,由外部按键设置监听控制蛇头的移动方向,在方向的指引下进行移动,蛇及苹果的位置都是由坐标数组确定的,苹果的位置也是随机产生的蛇的移动原理是后一矩形块覆盖前一个矩形块。
当一个苹果被吃掉的时候,要自动生成并显示下一个苹果的位置。
这些都是在设计过程中需要实现的。
2.3游戏控制分析游戏中需要通过按键对蛇的移动方位进行控制,共需要设置四个方位,分别是“东”“西”“南”“北”,在按键上用“上”“下”“左”“右”,按键与执行部分便涉及到监听,通过监听指示蛇的运动,此外,要设置蛇移动是的默认方向为“上”游戏开始时也是由“上”键启动,暂停后根据玩家的操作自动控制蛇的移动方向,设计过程中还应注意,蛇的移动只能是90度偏转,不能进行180度偏转。
此外还要设置游戏的四种状态,准备,运行,暂停,结束,蛇体变长的时候要用累加器进行加分。
游戏暂停时,要对当前游戏的参数和状态进行保存。
2.4 可行性分析贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。
贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。
而在吃到食物的时候,则只需把食物入队即可。
实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。
本次设计我将主要运用java语言来完成。
Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。
由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。
如果没有安全保证,用户从网络下载程序执行就非常危险。
Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。
第三章总体设计3.1系统功能模块层次图工程中包括4个Activity,分别为Snake(主界面)、Game(游戏界面)、Help (游戏说明界面)、AuthorView(作者信息界面),通过不同Activity之间的转换实现不同界面之间的切换。
Snake(Activity)继承了SnakeView类,SnakeView 类继承了TileView类。
TileView类继承了View其实Snake的工程蛮简单的,源文件就三个:Snake.java SnakeView.java TileView.java。
Snake类是这个游戏的入口点,TitleView类进行游戏的绘画,SnakeView类则是对游戏控制操作的处理。
Coordinate,RefreshHandler是2个辅助类,也是SnakeView类中的内部类。
其中,Coordinate是一个点的坐标(x,y),RefreshHandler将RefreshHandler对象绑定某个线程并给它发送消息。
如下图:类图3.2运行机制任何游戏都需要有个引擎来推动游戏的运行,最简化的游戏引擎就是:在一个线程中While循环,检测用户操作,对用户的操作作出反应,更新游戏的界面,直到用户退出游戏。
在Snake这个游戏中,辅助类RefreshHandler继承自Handler,用来把RefreshHandler与当前线程进行绑定,从而可以直接给线程发送消息并处理消息。
注意一点:Handle对消息的处理都是异步。
RefreshHandler在Handler的基础上增加sleep()接口,用来每隔一个时间段后给当前线程发送一个消息。
handleMessage()方法在接受消息后,根据当前的游戏状态重绘界面,运行机制如下:活动图运行机制这比较类似定时器的概念,在特定的时刻发送消息,根据消息处理相应的事件。
update()与sleep()间接的相互调用就构成了一个循环。
这里要注意:mRedrawHandle绑定的是Avtivity所在的线程,也就是程序的主线程;另外由于sleep()是个异步函数,所以update()与sleep()之间的相互调用才没有构成死循环。
最后分析下游戏数据的保存机制,如下:活动图这里考虑了Activity的生命周期:如果用户在游戏期间离开游戏界面,游戏暂停;或者由于内存比较紧张,Android关闭游戏释放内存,那么当用户返回游戏界面的时候恢复到上次离开时的界面。
3.3贪吃蛇功能流程图第四章详细设计与实现4.1 TiltView类TiltView的基类是View,包含了贪吃蛇游戏画面的各个设定参数,主要负责绘制游戏画面。
TileView类定义如下:public class TileView extends View {private static final String tag = "yao";protected static int mTileSize = 20;//方格的边长protected static int mXTileCount;//X轴上方格的个数protected static into mYTileCount;//Y轴上方格的个数private static int mXOffset;//绘图时X轴上的起始坐标private static int mYOffset;//绘图时Y轴上的起始坐标private Bitmap[] mTileArray;//位图数组private int[][] mTileGrid;//映射整个游戏画面的数组private final Paint mPaint = new Paint();//画笔public TileView(Context context, AttributeSet attrs) {super(context, attrs);Log.i(tag, "TileView Constructor");Log.i(tag, "mTileSize=" + mTileSize);}//重置位图数组的长度public void resetTiles(int tilecount) {mTileArray = new Bitmap[tilecount];}@Override//适应各种分辨率的屏幕,当改变屏幕大小尺寸时,同时修改tile的相关计数指标protected void onSizeChanged(int w, int h, int oldw, int oldh) {Log.i(tag, "onSizeChanged," + "w=" + w + " h=" + h + " oldw=" + oldw + " oldh=" + oldh);mXTileCount = (int) Math.floor(w / mTileSize);mYTileCount = (int) Math.floor(h / mTileSize);Log.i(tag, "mXTileCount=" + mXTileCount);Log.i(tag, "mYTileCount=" + mYTileCount);mXOffset = ((w - (mTileSize * mXTileCount)) / 2);mYOffset = ((h - (mTileSize * mYTileCount)) / 2);Log.i(tag, "mXOffset=" + mXOffset);Log.i(tag, "mYOffset=" + mYOffset);mTileGrid = new int[mXTileCount][mYTileCount];clearTiles();}//这里做了一个Drawable 到bitmap 的转换public void loadTile(int key, Drawable tile) {Bitmap bitmap = Bitmap.createBitmap(mTileSize, mTileSize, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);tile.setBounds(0, 0, mTileSize, mTileSize);tile.draw(canvas);mTileArray[key] = bitmap;}//清空图形显示public void clearTiles() {Log.i(tag, "TileView.clearTiles");for (int x = 0; x < mXTileCount; x++) {for (int y = 0; y < mYTileCount; y++) {setTile(0, x, y);}}}//在相应的坐标位置绘制相应的砖块public void setTile(int tileindex, int x, int y) {mTileGrid[x][y] = tileindex;}// onDraw@Override//将直接操作的画布绘制到手机界面上public void onDraw(Canvas canvas) {Log.i(tag, "onDraw");super.onDraw(canvas);Bitmap bmp;float left;float top;for (int x = 0; x < mXTileCount; x++) {for (int y = 0; y < mYTileCount; y++) {if (mTileGrid[x][y] > 0) {bmp = mTileArray[mTileGrid[x][y]];left = x * mTileSize + mXOffset;top = y * mTileSize + mYOffset;canvas.drawBitmap(bmp, left, top, mPaint);}}}}}4.2 SnakeView类SnakeView类定义了游戏运行时的画面改变及蛇体和果子的更新方法。