当前位置:文档之家› 安卓贪吃蛇游戏设计

安卓贪吃蛇游戏设计

安卓贪吃蛇游戏设计
安卓贪吃蛇游戏设计

实习实训手册

专业: 10嵌入式系统工程

实训名称:Android贪吃蛇游戏设计班级:

姓名:_________________________

学号:

指导教师:

起止时间:201 年月日至201 年月日

信息工程系

Android贪吃蛇游戏设计

Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。

1 项目背景说明

针对当今游戏开发的流行趋势,手机游戏的设计已成为主流,随着计算机技术及硬件技术的不断发展,用户的需求量也越来越多,并且用户追求的效果也越来越好,在此形势下好的设计方法尤为重要,基于android系统的手机游戏设计方法简单且效率较高。贪吃蛇游戏也是很多人热衷的游戏,用户不仅要求其界面设计精美,更希望操作简单,程序执行速度快。

Android支持使用Java作为编程语言来开发应用程序,而Android的Java开发方面从接口到功能,都有层出不穷的变化。考虑到Java虚拟机的效率和资源占用,谷歌重新设计了Android的Java,以便能提高效率和减少资源占用,因而与J2ME等不同。操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(Virtual Machine)。Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。

贪吃蛇游戏是一款老牌的手机游戏,同时也是一款比较需要耐心地游戏。贪吃蛇游戏就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的食物,越吃越长。只要蛇头碰到屏幕四周,或者碰到自己的身子,小蛇就立即毙命。玩“贪吃蛇游戏”,难度最大的不是蛇长得很长的时候,而是开始的时候。那时蛇身很短,看上去难度不大,却最容易死掉,因为把玩一条小蛇让人容易走神,失去耐心。

Android应用越来越广泛,开发Android游戏也渐渐成为市场的必须,本游戏的开发是基于Android1.5系统,采用eclipse编程实现。

2 时间安排

消化资料、系统调查1天

系统分析、总体设计,实施计划5天

撰写报告2天

演示、验收 1天

3 具体要求

1、明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计

指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收

集、归纳相关资料解决具体问题的方法。严格要求自己,要独立思考,按

时、独立完成课程设计任务。

2、设计报告:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段

完全相同者一律以抄袭论处。

4设计与实现

具体实现过程分为以下3步:项目框架、游戏类图设计、界面设计。

○1项目框架

新建一个Eclipse工程并命名为Snake,工程如下图所示:

图1.1 Snake工程

工程中包括4个Activity,分别为Snake(主界面)、Game(游戏界面)、Help(游戏说明界面)、AuthorView(作者信息界面),通过不同Activity之间的转换实现不同界面之间的切换。游戏主界面如下图所示:

图1.2 游戏主界面

○2游戏类图设计

Game(Activity)继承了SnakeView类,SnakeView类继承了TileView类。TileView 类继承了View,如下图所示:

图1.3 类图

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 int 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);

}

}

}

}

}

SnakeView类定义了游戏运行时的画面改变及蛇体和果子的更新方法。首先用Handler机制实现定时刷新,代码如下:

class RefreshHandler extends Handler {

//获取消息并处理

@Override

public void handleMessage(Message msg) {

SnakeView.this.update();

SnakeView.this.invalidate();//刷新view为基类的界面

Log.i(tag, "handleMessage|Thread Name="+Thread.currentThread().getName());

}

//定时发送消息给UI线程,以此达到更新效果

public void sleep(long delayMillis) {

this.removeMessages(0); //清空消息队列,Handler进入对新消息的等待

Log.i(tag, "sleep|Thread Name="+Thread.currentThread().getName());

//定时发送新消息,激活handler

sendMessageDelayed(obtainMessage(0), delayMillis);

}

};

定义SnakeView()函数初始化游戏,代码如下:

public SnakeView(Context context, AttributeSet attrs) {

super(context, attrs);

Log.i(tag, "SnakeView Constructor");

initSnakeView();//构造函数中,初始化游戏

}

定义initSnakeView()初始化SnakeView类,代码如下:

private void initSnakeView() {

Log.e(tag, "initSnakeView");

//设置焦点,由于存在文字界面和游戏界面的跳转。这个focus是不可或缺的。

setFocusable(true);

//取得资源中的图片,加载到砖块字典中。

Resources r = this.getContext().getResources();

resetTiles(4);

loadTile(RED_STAR, r.getDrawable(R.drawable.redstar));

loadTile(YELLOW_STAR, r.getDrawable(R.drawable.yellowstar));

loadTile(GREEN_STAR, r.getDrawable(R.drawable.greenstar));

}

此外还定义了updateWalls()、updateApples()、updateSnake()绘制墙、果子、蛇,以及更新画面函数、保存位置坐标函数等,具体代码请详见目录。

○3界面设计

界面设计包括游戏主界面(Snake)、作者信息界面、游戏说明界面、游戏界面的设计。界面的设计采用的是xml文档形式,在xml文档中规划好界面布局布局后,分别在java文件中声明。

主界面设计:主界面包括一个TextView、一个imagebutton、三个button,其main.xml 文档如下:

android:layout_width="fill_parent"

android:layout_height="fill_parent"android:background="@drawable/icon">

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"android:gravity="center">

android:visibility="visible"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/ImageButton1">

android:id="@+id/Button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:visibility="visible">

android:id="@+id/Button5"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:visibility="visible">

android:id="@+id/Button3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:visibility="visible">

其对应的Snake.java文件如下:

public class Snake extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/6115555590.html,yout.main);

initialstart();//初始化

}

public void initialstart(){

ImageButton imageButton = (ImageButton)this.findViewById(R.id.ImageButton1);

Button button1 = (Button)this.findViewById(R.id.Button1);

Button button3 = (Button)this.findViewById(R.id.Button3);

Button button5 = (Button)this.findViewById(R.id.Button5);

button1.setText("作者信息");

button3.setText("退出");

button5.setText("游戏说明");

imageButton.setImageResource(R.drawable.icon1);

//按钮注册到各自的监听器

imageButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Intent intent=new Intent();

intent.setClass( Snake.this,Game.class);

startActivity(intent);//跳转到Game界面

Snake.this.finish();

}

});

button1.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

//setContentView(https://www.doczj.com/doc/6115555590.html,yout.author);

Intent intent=new Intent();

intent.setClass( Snake.this,AuthorView.class);

startActivity(intent);//跳转到作者信息界面

Snake.this.finish();//注销跳转之前的界面

}

});

button3.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Snake.this.finish();//退出应用程序

}

});

button5.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Intent intent=new Intent();

intent.setClass( Snake.this,Help.class);

startActivity(intent);//跳转到游戏说明界面

Snake.this.finish();

}

});

}

}

游戏界面设计:游戏界面包括一个button,一个my.game.snake.SnakeView,其game.xml文档如下:

android:layout_width="fill_parent"

android:layout_height="fill_parent">

android:id="@+id/snake"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/background"/>

android:layout_width="fill_parent">

android:layout_height="wrap_content"android:gravity="center_horizontal">

相对应的Game.java文件如下:

public class Game extends Activity{

//定义游戏参数

private SnakeView mSnakeView;

private static String ICICLE_KEY = "snake-view";

private int mMode = READY;

public static final int PAUSE = 0;

public static final int READY = 1;

public static final int RUNNING = 2;

public static final int LOSE = 3;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/6115555590.html,yout.game);

mSnakeView = (SnakeView) findViewById(R.id.snake);

//设置界面背景

mSnakeView.setBackgroundResource(R.drawable.background);

TextView tv = (TextView) findViewById(R.id.text);

Button button4 = (Button)this.findViewById(R.id.button4);

//根据TextView状态判断是否开始游戏

mSnakeView.setStatusTextView(tv);

if (savedInstanceState == null) {

mSnakeView.setMode(SnakeView.READY);

}

else {

Bundle bundle = savedInstanceState.getBundle(ICICLE_KEY);

if (bundle != null) {

mSnakeView.restoreState(bundle);

} else {

mSnakeView.setMode(SnakeView.PAUSE);

}

}

//按钮注册到监听器

button4.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Intent intent=new Intent();

intent.setClass( Game.this,Snake.class);

startActivity(intent);

Game.this.finish();

}

});

}

//设置键盘监听事件,若按下UP键则开始游戏

public boolean onKeyDown(int keyCode, KeyEvent msg) {

if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {

if (mMode == READY | mMode == LOSE) {

mSnakeView.initNewGame();

mSnakeView.setMode(RUNNING);

mSnakeView.update();

return (true);

}

}

return super.onKeyDown(keyCode, msg);

}

//判断游戏状态是否为暂停

protected void onPause() {

super.onPause();

// Pause the game along with the activity

mSnakeView.setMode(SnakeView.PAUSE);

}

@Override

//保存事件状态

public void onSaveInstanceState(Bundle outState) {

outState.putBundle(ICICLE_KEY, mSnakeView.saveState());

}

}

作者信息界面设计:此界面包括一个TextView、一个button,其author.xml文档如下:

xmlns:android="https://www.doczj.com/doc/6115555590.html,/apk/res/android"

android:layout_x="0dip"android:id="@+id/scrollView1"

android:background="@drawable/background1"

android:layout_height="wrap_content"android:layout_width="wrap_content"android:layout_y="4dip">

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:id="@+id/text"

android:text="姓名:林杰性别:男学院:交通学院

"

android:visibility="visible"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:scrollbars="vertical"android:textSize="34dip"/>

相对应的AuthorView.java文件如下:

public class AuthorView extends Activity{

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/6115555590.html,yout.author);

Button button2 = (Button)this.findViewById(R.id.Button2);

//按钮注册到监听器

button2.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Intent intent=new Intent();

intent.setClass( AuthorView.this,Snake.class);

//跳转到主界面

startActivity(intent);

//注销当前界面

AuthorView.this.finish();

}

});

}

}

游戏说明界面设计:此界面包括一个TextView、一个button,其help.xml文档如下:

xmlns:android="https://www.doczj.com/doc/6115555590.html,/apk/res/android"

android:layout_x="0dip"android:id="@+id/scrollView1"

android:background="@drawable/background2"

android:layout_height="wrap_content"android:layout_width="wrap_content"android:layout_y="4dip">

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:scrollbars="vertical"android:text="游戏中按键盘UP键蛇向上按DOWN键向下按

LEFT键向左按RIGHT键向右"android:layout_height="wrap_content"android:id="@+id/text" android:layout_x="-1dip"android:layout_y="50dip">

相对应的Help.java文件如下:

public class Help extends Activity{

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/6115555590.html,yout.help);

Button button6 = (Button)this.findViewById(R.id.Button6);

//按钮注册到监听器

button6.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {

Intent intent=new Intent();

intent.setClass( Help.this,Snake.class);

//跳转到主界面

startActivity(intent);

//注销当前界面

Help.this.finish();

}

});

}

}

至此,全部界面设计完成,但还有最重要的一步,就是将所有的Activity注册到AndroidManifest.xml中。AndroidManifest.xml文档如下:

package="my.game.snake"

android:versionCode="1"

android:versionName="1.0">

android:label="@string/app_name">

android:name=".AuthorView">

android:name=".Game">

android:name=".Help">

另外strings.xml中定义了常量字符,文档如下:

Hello World, Snake!

Snake

贪吃蛇\n按两次“向上”键开始"

暂停中\n按“向上”键恢复

游戏结束\n得分:

\n按“向上”键开始\n按“返回”按钮退出游戏

至此,贪吃蛇游戏设计完毕。

3项目演示

程序运行效果图如下:

图3.1 进入Snake应用程序

图3.2 游戏主界面

图3.3 游戏开始界面

图3.4 游戏运行界面

图3.5 游戏结束界面

由于涉及到个人信息,所以未给出截图

图3.6 作者信息界面

图3.7 游戏说明界面

4 小结

本课程的设计的目的是通过实践使同学们经历面向对象全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。

附录

TileV iew.java

package my.game.snake;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.graphics.drawable.Drawable;

import android.util.AttributeSet;

import android.util.Log;

import android.view.View;

public class TileView extends View {

private static final String tag = "yao";

protected static int mTileSize = 20;//方格的边长

protected static int mXTileCount;//X轴上方格的个数

protected static int 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);

}

}

}

}

}

SnakeView.java

package my.game.snake;

import java.util.ArrayList;

import java.util.Random;

import android.content.Context;

import android.content.res.Resources;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.AttributeSet;

import android.util.Log;

import android.view.KeyEvent;

import android.view.View;

import android.widget.TextView;

public class SnakeView extends TileView {

private static final String tag = "yao";

private int mMode = READY;

//游戏的四种状态

public static final int PAUSE = 0;

public static final int READY = 1;

public static final int RUNNING = 2;

public static final int LOSE = 3;

//蛇体运动的方向识别

private int mDirection = NORTH;

private int mNextDirection = NORTH;

private static final int NORTH = 1;

private static final int SOUTH = 2;

private static final int EAST = 3;

private static final int WEST = 4;

//游戏中仅有的三种砖块对应的数值

private static final int RED_STAR = 1;

private static final int YELLOW_STAR = 2;

private static final int GREEN_STAR = 3;

private long mScore = 0;//记录获得的分数

private long mMoveDelay = 600;//每移动一步的延时。初始时设置为600ms

private long mLastMoveTime;

private TextView mStatusTextView;//用来显示游戏状态的TextView

//两个链表,分别用来存储蛇体和果子的坐标

private ArrayList mSnakeTrail = new ArrayList();

private ArrayList mAppleList = new ArrayList();

//随机数生成器

private static final Random RNG = new Random();

//用Handler机制实现定时刷新

private RefreshHandler mRedrawHandler = new RefreshHandler();

class RefreshHandler extends Handler {

//获取消息并处理

@Override

public void handleMessage(Message msg) {

SnakeView.this.update();

SnakeView.this.invalidate();//刷新view为基类的界面

Log.i(tag, "handleMessage|Thread Name="+Thread.currentThread().getName());

}

//定时发送消息给UI线程,以此达到更新效果

public void sleep(long delayMillis) {

this.removeMessages(0); //清空消息队列,Handler进入对新消息的等待

Log.i(tag, "sleep|Thread Name="+Thread.currentThread().getName());

//定时发送新消息,激活handler

sendMessageDelayed(obtainMessage(0), delayMillis);

}

};

public SnakeView(Context context, AttributeSet attrs) {

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.doczj.com/doc/6115555590.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)

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

贪吃蛇游戏程序设计 一、课程设计任务 贪吃蛇小游戏程序设计 二、设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固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();//图形驱动

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

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 公司开发的两线式

贪吃蛇游戏系统课程设计

一、课程设计的目的和要求 1.通过C#课程设计,使学生能将学到的面向对象的程序设计思想用到具体的工作和学习中,加深对类与对象的理解,要求学生能够对现实生活中许多具体的事物抽象出类,并掌握继承与派生,基类、虚方法和抽象方法和多态性的概念。 2.通过这次课程设计掌握《C#语言程序设计》的编程思想,为后续课程打下基础。 3.培养我们实际操作能力和实践能力,为以后的工作打下坚实的基础。 二、课程设计内容 编写一个C# GUI版贪吃蛇小游戏程序 我们的需求是: 一条蛇在封闭的围墙内爬行,玩家可以通过方向键来控制蛇 的运动方向,围墙内随机出现一食物,蛇头碰到食物时表示 食物被吃掉,此时蛇身加长一节,同时游戏成绩加10分,接 着又出现食物等待蛇吃周而复所,直到蛇撞墙或身体交叉而 死游戏结束。 基本要求: 1、要求利用C#完成游戏的设计 2、要求在设计过程中建立清晰的类层次 3、程序应具有容错功能 4、程序界面美观,逻辑层次清楚,结构合理,文档清晰

三、课程设计基本要求 1) 要求利用面向对象的方法以及C#的编程思想来完成系统的设计; 2) 要求在设计的过程中,建立清晰的类层次; 3) 在系统中至少要定义四个类,每个类中要有各自的属性和方法; 4) 在系统的设计中,至少要用到面向对象的一种机制。 5) 程序应具有容错功能。 6)程序运行结果正确,操作方便,界面美观,逻辑层次清楚,程序 结构合理,文档规范清晰。

目录 1:需求分析 1.1程序功能说明 1.2程序设计的分析 2:系统的主要功能模块 2.1程序功能图示 3:程序的输入,输出和相应的算法 3.1程序的输入 3.2程序的输出 3.3程序的一些重要方法的实现算法和方法4:程序的测试 4.1程序测试的内容和结果 5:程序运行效果图 6:部分程序代码 6.1 蛇类代码 6.2 食物类代码 7:程序的注意事项 8:程序的不足之处

基于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.流程图(函数调用关系图)

基于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的屏幕大小如何,该游戏总是能获得最佳的显示 效果。

游戏基础课程设计

枣庄学院 信息科学与工程学院课程设计任务书题目:贪吃蛇游戏的设计与开发 专业:计算机多媒体技术专业 课程:游戏基础 姓名: 姓名: 姓名: 指导教师:孙晓飞职称:助教 完成时间:2013年12 月----2014年1 月 枣庄学院信息科学与工程学院制 2013年12月29日

课程设计任务书及成绩评定

目录 引言 (5) 1.工作计划 (5) 1.1 主要任务阶段划分 (5) 1.2 工作任务分工 (5) 2.需求分析 (6) 2.1 概述 (6) 2.2 用户分析 (6) 2.3 约束条件 (6) 2.4 功能需求 (6) 2.5 用户界面需求 (7) 3.设计与实现 (7) 3.1 概述 (7) 3.2 详细设计 (7) 3.2.1类的抽象与设计 (7) 3.3 主要程序文件 (8) 3.4开发环境以及部署环境要求 (10) 3.5主要源码 (10) 4.测试 (14) 4.1 概述 (14) 4.2 测试环境 (14) 4.3 测试计划 (14) 4.4测试项目及结果 (14) 5.工作总结 (15) 5.1 工作成果 (15) 5.2 过程分析 (15) 5.3 经验教训及其分析 (15)

引言 由于传统的贪吃蛇只是在一个宽阔的用户区进行游戏。对于蛇只是在区域四周有障碍墙壁,这样也许在一开始不会有太大的难度和成就感。 又由于人们曾经也钟爱一种迷宫游戏,它主要是考察玩家的观察力,看能否在最短的时间里走出迷宫。 基于以上两个游戏,我们准备利用本学期学到的windows界面程序设计方法将两个游戏有机结合起来,使用户既能体验贪吃蛇中看着蛇身不断加长而绕出各种折线的成就感,又能感受到在迷宫中找寻出路的紧张心情,而且迷宫的出现使蛇遇到的障碍遍布游戏区,这样用户就更能展示一下自己操作的高水平。 1 工作计划 1.1主要工作阶段划分 1.2工作任务分工

基于单片机的新贪吃蛇游戏设计与制作

暑期任务实验报告总结 题目:红外控制贪吃蛇游戏 2012年8月28日 目录 一 ,引言 (4) 二, 课题任务及设计思路 (4) 2.1主要任务 (4) 2.2 设计思路4

2.2.1 主控制器的选择 (5) 2.2.2 液晶屏的选择 (8) 三 ,具体设计 (9) 3.1软硬件基本分工 (9) 3.2硬件设计部分 (9) 3.2.1器件介绍、通信协议介绍 (9) 3.2.2电路类型,类型介绍 (9) 3.2.3 电路具体设计 (10) 3.3软件设计部分 (11) 3.3.1软件组成部分 (11) 3.3.2软件组成部分````````````````````````````````````````````````````````````````````````````````````````````14 3.3.3 软件实现的结果 (27) 四、整机调试和检测结果 ................................................................. 错误!未定义书签。 五、总结 (15) 参考文献 (16) 附录1 总电路图 (17) 附录2 系统程序 (18)

1 引言 如今,游戏机风行的程度,是第一台电子游戏机的研制者诺兰-布什纳尔先生始料不及的。在全世界最大的城市,直至最小的村庄,从纽约最辉煌的游乐场,到高加索最小的乡镇儿童娱乐点,在千家万户,正在进行着千千万万这样的“战斗”,伴随着无数成功与失败,兴奋与懊丧。游戏机带来了一个全球性的疯狂症,其他任何娱乐与之相比都望尘莫及。然而,究竟是什么原因使游戏机如此风行呢? 在回顾了游戏机发展简史之后,我们不难悟出,技术进步在游戏机发展过程中起到了极大的促进作用。 第二次世界大战以后,电子计算机技术得到了突飞猛进的发展。先是由晶体管代替了笨重的真空管,后来出现了集成电路和大规模集成电路,使电子计算机一代一代实现更新,同时软件技术也发展迅速。在美国,集中了许多计算机软件的设计人才,他们工作之余,时常喜爱编一种能与人斗智的“游戏”,以此来锻炼编程的能力。这种“游戏”花样繁多,但其特点都是利用计算机软件事先设计好的“分析”、“判断”能力反过来与人较量。由于不断修改更新,使计算机的“智力”水平与人难分高低。 随着深蓝计算机与人的棋类对决,到现在的PSP游戏机或者是家庭用的X-BOX 游戏机,游戏机的技术是日益的发展、进步。 但是,技术进步绝不是游戏机风行的唯一因素。随着终端设备开发能力的加强,作为娱乐终端的游戏机也得到了很大程度的发展。只有得到了游戏终端技术的支持,才能做出更新、更高难的游戏。这也加速了游戏机在全球风行程度,所以对于游戏机的研究和设计具有很重要的意义,这也是本课题研究的来源 二.课题任务及设计思路 2.1主要任务 组建遥控器控制电路,要求通过遥控器的方向键控制贪吃蛇游戏。(类似于贪吃蛇游戏) 2.2 设计思路 ①此实验我们采用38k的红外对LCD控制,通过红外接收模块对遥

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

电气与信息工程学院 单片机课程设计报告 设计题目:基于单片机的贪吃蛇设计 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左右,电压过大将会彻底损坏。

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)文件的基本出操作。

贪吃蛇游戏设计

XX 理工学院 课程设计 课程程序设计基础 题目贪吃蛇小游戏

1 问题要求及任务描述 1.1题目要求 制作贪吃蛇小游戏 1.2 主要任务 1.美化游戏界面, 2.增加当吃当食物时自动加10分。 3.增加当满100分主动提醒玩家已赢了本局,需从选难度play again。 4.参考其他程序完成程序的总体规划;设计画蛇围栏并控制设走动方向、范 围,产生随机食物。 2 解决问题的主要思路和方法 2.1 关键问题 未解决问题 1.界面不是彩色的,美感差。 2.不能暂停。 3.当玩家从第一局进入第二局时,原4节的贪吃蛇依旧存在,不能删除。 已解决问题 1.将原乱码丑陋的界面改为简单但还算美观的界面。 2.运用函数使蛇吃完食物增加十分,没到整百分数主动提醒玩家已赢了本 局,需从选难度play again。 2.2 拟采用解决问题的方法 1.针对已解决问题一:在TC3视图下对文字、中文标点不识别,为乱码, 所以改为英文,合理设计了界面比例、输出英文位置。 2.针对已解决问题二:调运goto(),使的达到设计分数时自动到达选择难 度界面,增加趣味。 2.3 主要算法和处理流程图 关键的数据流程图

否 3 程序实现 3.1 程序实现时应考虑的问题 要玩家的角度来看待,尽量使操作简单明了有序,且有层次,最起码视觉上

要舒服。 3.2 主要源代码及说明 #include #include #include #include #include #include #include int main() { int x[150],y[150]; //*蛇的每一节的坐标*// int m,n; //*食物的坐标*// int z=4; //*蛇的节数*// int direction=4; //*蛇的方向,1,2,3,4:上下左右*// int i; //*定义循环专用变量*// int food=1; //*判断食物的存在*// int speed; //*游戏速度*// int key; //*按键后返回的键值*// int score=0; //*得分*// int headx,heady; //*蛇头转换坐标*// int scored=0; //*得分多少的变量*// for(i=0;i<4;i++) //*初始化蛇的坐标*// x[i]=39-i*2; for(i=0;i<4;i++) y[i]=13; headx=x[0];heady=y[0]; //*蛇头坐标初始化*// clrscr(); //*清屏*// gotoxy(36,8); printf("Snakes"); //*开始画面*// sleep(1); printf("%8s","(Made By WeiXiang ZhaoYan)"); sleep(2); clrscr();

贪吃蛇游戏设计报告

贪吃蛇游戏设计 班级:13级7班 学号: 姓名: 一、实验目的 1.熟练掌握C6713 的中断结构和对中断的处理过程。 2.熟练掌握C6713 定时器的控制和使用方法。 3.熟练掌握键盘的使用原理及编程方法。 4.熟练掌握使用C6713DSP的扩展空间控制外围设备信息的方法;掌握蜂鸣器发声原理和音乐发生方法;掌握液晶显示器的显示控制原理及编程方法。 5.掌握C6713的系统自启动设计方法。 6.熟练掌握C语言开发DSP程序的流程及调试方法。 二、实验设备 计算机,ICETEK-C6713-EDU 实验箱,示波器。 三、实验内容(*号为选做内容) 1、在液晶屏上显示游戏背景、初始蛇身及运动、随机产生食物。 2、可以用键盘控制蛇身运动、暂停游戏。 3、游戏烧写到FLASH内,可以上电自启动运行。 四、设计原理 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个按键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体叉蛇头撞倒自

己身体游戏结束。 要想实现贪吃蛇功能,需要应用到键盘,按键中断,和液晶显示。想要正常使用按键,就要调用包含于有文件"ICETEK-C6713-A.h"中的init_emif();和InitCTR();程序用来初始化emif和ICETEK-CTR。 中断原理:dsp有三种类型的中断cpu的TMS320C6000:重置、可屏蔽的、不可屏敝的复位中断优先级最高,对应于复位信号。不可屏蔽中断优先级最高,对应于第二敝中断信号。最低优先级中断中断4?15对应INT4?INT15信号。重置,敝中断,一些INT4?INT15信号映射到C6000设备上的别针。一些INT4?INT15中断信号是内部使用的外设和一些可能不可用或在软件的控制下可以使用。 外中断区别于计时器等片内设备中断,它来源于DSP 片外,属于硬件中断。外中断信号通过DSP 器件封装上的专用管脚输入DSP,属于可屏蔽中断。TMS3206713DSP 有三个外中断:EXT_INT4~EXT_INT7,如果CPU 允许,这四个信号线上的低脉冲信号会中断CPU。 中断是为使CPU 具有对外界异步事件的处理能力而设置的。通常DSP 工作在包含多个外界异步事件环境中,当这些事件发生时,DSP 应及时执行这些事件所要求的任务。中断就是要求CPU 暂停当前的工作,转而去处理这些事件,处理完成后,再回到原来被中断的地方继续原来的工作。显然,服务一个中断包括保存当前处理现场,完成中断服务,恢复各寄存器和现场,然后返回继续执行被暂时中断的程序。请求CPU 中断的请求源称为中断源。这些中断源可以是片内的,如定时器等,也可以是片外的,如A/D 转换及其他片外装置。片外中断请求连接到芯片的中断管脚,并且在这些管脚处的电平上升沿产生。如果这个中断被使能,则CPU开始处理这个中断,将当前程序流程转向中断服务程序。当几个中断源同时向CPU 请求中断时,CPU 会根据中断源的优先级别,优先响应级别最高的中断请求。TMS320C6000 有11 个寄存器管理中断服务: *控制状态寄存器CSR 控制全局使能或禁止中断 *中断使能寄存器IER 使能或禁止中断处理 *中断标志寄存器IFR 指示有中断请求但未被响应的中断发生 *中断设置寄存器ISR 手动设置IFR 中的标志位 *中断清除寄存器ICR 手动清除IFR 中的标志位 *中断服务表指针ISTP 指向中断服务表的起始地址 *不可屏蔽中断返回指针NRP 包含从不可屏蔽中断返回的地址,该中断返回通过B NRP指令完成

相关主题
文本预览
相关文档 最新文档