文档库 最新最全的文档下载
当前位置:文档库 › java编写的贪吃蛇游戏源码

java编写的贪吃蛇游戏源码

java编写的贪吃蛇游戏源码
java编写的贪吃蛇游戏源码

石家庄学院

一、函数程序结构图

注释:

贪吃蛇

Draw reAppear getM setM getN setN

paint

ScoreCh

eck

.stop

getscore

setscore

process

Key

Mian

函数

Deadif

Tailadd

Deltail

Headadd

Tailadd()

Deltail()

Headadd

draw

move

eat

keyPress

ed

Run

Pause

Restart

go_on

isPause

setPause

install

定义

方向变量

L,U,D,R

Draw

Keypressed

Yar

d

Text

Snake

PaintTh

read

Node

KeyMo

nitor

Food

Direction

类名

方法名

Map

Draw

二、题目分析

通过分析该程序基本需要以下几个类:Text(Main方法)、Snake(蛇)、Food (食物)、Yard(窗口)、Map(地图)、Node(节点)、PaintThread(线程)、Dir

(方向)、KeyMonitor(键盘监听)。主要实现蛇运动的基本操作和一些事件反应、游戏分数的记录、暂停、重新开始、更改蛇蛇颜色,蛇的移动速度,地图、死亡模式的改变等功能。

本程序运用Java语言知识,用面向对象的思维设计“贪吃蛇”游戏。

三、结果分析

运行程序出现游戏界面,蛇(Snake)头自动向前移动,用键盘的上(Up)下(Down)左(Left)右(Right)键控制蛇头的移动方向。游戏窗体中在随机位置出现紫色的食物(Food)。

1、每吃一个加5分

2、默认撞墙不死

3、默认速度3

4、默认地图1

5、默认普通蛇身

6、默认30分提升一个速度档次

7、默认每个速度都走完后更换地图并且速度恢复默认,积分归零

功能键:

1、按F1重新开始

2、按空格键暂停/继续

3、按1/2/3/4/5数字键设置蛇的移动速度(逐渐变快)

4、按F2更换地图(3种)

5、按F3普通蛇/彩蛇的切换

6、按F4更换游戏模式(蛇撞到最外围为死亡还是从另一端返回)

该程序初步完成了“贪吃蛇”的游戏雏形,但是缺乏完善。比如:界面效果十分粗糙、屏幕闪烁、缺少声音等。但是,我们通过编写贪吃蛇,能更好的运用面向对象的思维方式了,并学到了许多有用的经验。

四、附录(程序清单)

1、Snake.java

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.KeyEvent;

public class Snake {

Node head = null;

Node tail = null;

int size = 0;

Yard y;

Node n = new Node(1, 2, Dir.D);

public Snake(Yard y) {

head = n;

tail = n;

size = 1;

this.y = y;

for(int i=0;i<3;i++)

this.Headadd();

}

public void Tailadd() {

Node node = null;

switch (tail.dir) {

case L :

node = new Node(tail.m+1, tail.n, tail.dir);

break;

case U :

node = new Node(tail.m, tail.n+1, tail.dir);

break;

case R :

node = new Node(tail.m-1, tail.n, tail.dir);

break;

case D :

node = new Node(tail.m, tail.n+1, tail.dir);

break;

}

tail.next = node;

node.pre = tail;

tail = node;

size ++;

}

public void Deltail() {

if (size == 0)

return;

tail = tail.pre;

tail.next = null;

}

public void Headadd() {

Node node = null;

switch (head.dir) {

case L:

node = new Node(head.m - 1, head.n, head.dir);

break;

case U:

node = new Node(head.m, head.n - 1, head.dir);

break;

case R:

node = new Node(head.m + 1, head.n, head.dir);

break;

case D:

node = new Node(head.m, head.n + 1, head.dir);

break;

}

node.next = head;

head.pre = node;

head = node;

size++;

}

public void draw(Graphics g) {

if (size <= 0)

return;

move();

for (Node n = head; n != null; n = n.next) {

if(head==n){

g.setColor(Color.BLUE);

if(n.dir==Dir.L||n.dir==Dir.R)

g.fillOval(n.m*Yard.B_WIDTH, n.n*Yard.B_WIDTH, Yard.B_WIDTH, Yard.B_WIDTH-3);

else

g.fillOval(n.m*Yard.B_WIDTH, n.n*Yard.B_WIDTH,

Yard.B_WIDTH-3, Yard.B_WIDTH);

}

else

n.draw(g);

}

}

public void Deadif() {

switch(Yard.STYLE){

case 2:

if (head.m < 0 || head.n < 30/Yard.B_WIDTH || head.m >= (Yard.WIDTH / Yard.B_WIDTH)

|| head.n >= (Yard.HEIGHT / Yard.B_WIDTH)) {

y.stop();

}

break;

case 1:

int cols = Yard.WIDTH / Yard.B_WIDTH;

int rows = Yard.HEIGHT / Yard.B_WIDTH;

if(head.m < 0) head.m = cols;

else if (head.m >= cols) head.m = 0;

else if (head.n < 30/Yard.B_WIDTH) head.n = rows;

else if (head.n >= rows) head.n = 30/Yard.B_WIDTH;

break;

}

for (Node p = head.next; p != null; p = p.next) {

if (head.m == p.m && head.n == p.n) {

y.stop();

}

}

switch (Yard.MAP) {

case 1://地图1

break;

case 2://地图2

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

{

if(head.m==j&&head.n==10)

y.stop();

}

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

{

if(head.m==j&&head.n==20)

y.stop();

}

break;

case 3://地图3

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

{

if(head.m==j&&head.n==10)

y.stop();

}

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

{

if(head.m==j&&head.n==20)

y.stop();

}

for (int j = 20; j < 26; j ++)

{

if(head.m==Yard.WIDTH/Yard.B_WIDTH-10&&head.n==j) y.stop();

}

for (int j = 5; j < 10; j ++)

{

if(head.m==10&&head.n==j)

y.stop();

}

break;

default:

break;

}

}

void move() {

Yard.MOVECHECK = true;

Headadd();

Deltail();

Deadif();

}

public void eat(food e) {

if (y.f.getM() == y.s.head.m && y.f.getN() == y.s.head.n){

e.reAppear();

this.Tailadd();

y.setscore(y.getscore() + 5);

}

}

public void keyPressed(KeyEvent e) {

int key = e.getKeyCode();

switch (key) {

case KeyEvent.VK_LEFT:

if (head.dir != Dir.R)

head.dir = Dir.L;

break;

case KeyEvent.VK_UP:

if (head.dir != Dir.D)

head.dir = Dir.U;

break;

case KeyEvent.VK_RIGHT:

if (head.dir != Dir.L)

head.dir = Dir.R;

break;

case KeyEvent.VK_DOWN:

if (head.dir != Dir.U)

head.dir = Dir.D;

break;

}

}

}

2、Food.java

import java.awt.Color;

import java.awt.Graphics;

import java.util.Random;

public class Food {

public static int FOODSTYLE = 1;

private int m = r.nextInt(Yard.WIDTH / Yard.B_WIDTH);// 横格

private int n = r.nextInt(Yard.HEIGHT / Yard.B_WIDTH - 30/Yard.B_WIDTH) + 30/Yard.B_WIDTH;// 竖格

public static Random r = new Random();

public int getM() {

return m;

}

public void setM(int m) {

this.m = m;

}

public int getN() {

return n;

}

public void setN(int n) {

this.n = n;

}

public void reAppear() {

this.m = r.nextInt(Yard.WIDTH / Yard.B_WIDTH);

this.n = r.nextInt(Yard.HEIGHT / Yard.B_WIDTH - 30/Yard.B_WIDTH) + 30/Yard.B_WIDTH;

}

public void draw(Graphics g) {

switch (Yard.MAP) {

case 2://地图1

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

{

if(m==j&&n==10)

this.reAppear();

}

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

{

if(m==j&&n==20)

this.reAppear();

}

break;

case 3://地图2

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

{

if(m==j&&n==10)

this.reAppear();

}

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

{

if(m==j&&n==20)

this.reAppear();

}

for (int j = 20; j < 26; j ++)

{

if(m==Yard.WIDTH/Yard.B_WIDTH-10&&n==j)

this.reAppear();

}

for (int j = 5; j < 10; j ++)

{

if(m==10&&n==j)

this.reAppear();

}

break;

default:

break;

}

Color old = g.getColor();

g.setColor(new Color(100, 13, 250));

g.fillOval(m * Yard.B_WIDTH, n * Yard.B_WIDTH, Yard.B_WIDTH,

Yard.B_WIDTH);

g.setColor(old);

}

}

3、Yard.java

import java.awt.Color;

import java.awt.Font;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.event.KeyEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class Yard extends Frame {

public static final int WIDTH = 600;

public static final int HEIGHT = 480;

public static final int B_WIDTH = 15;

private int score = 0;

public static int MAP =1;//地形

public static int STYLE =1;//模式

public static int SBODY =1;//蛇身颜色模式

public static boolean MOVECHECK= true;

PaintThread th = new PaintThread(this);

private boolean gameover = false;

public boolean isGameover() {

return gameover;

}

public void setGameover(boolean gameover) {

this.gameover = gameover;

}

public Yard(){

Color c = new Color(0,166,0);

this.setTitle("贪吃蛇");

this.setLocation(200, 200);

this.setSize(WIDTH, HEIGHT);

this.setBackground(c);

this.setResizable(false);

this.setVisible(true);

this.addWindowListener(new WindowAdapter() {// 匿名的局部类@Override

public void windowClosing(WindowEvent e) {

setVisible(false);

System.exit(0);

}

});

this.addKeyListener(new KeyMonitor());

th.start();

}

Food f = new Food();

Snake s = new Snake(this);

@Override

public void paint(Graphics g) {

// 画格

Color old = g.getColor();

Map.draw(g);

f.draw(g);// 画蛋

s.draw(g);// 画蛇

s.eat(f);

g.setColor(Color.YELLOW);

g.drawString("score:" + score, 10, 60);

g.setFont(new Font("宋体", Font.BOLD, 50));

if (gameover) {

g.setColor(Color.black);

g.fillRect(0, 0, WIDTH, HEIGHT);

g.setColor(Color.YELLOW);

g.drawString("游戏结束!", 200, 180);

g.setFont(new Font("宋体", Font.BOLD, 30));

g.drawString("score:" + score, 10, 60);

th.pause();

}

g.setColor(old);

this.ScoreCheck(g);

}

public void ScoreCheck(Graphics g){

if(score == 30) th.install(90);

if(score ==60) th.install(60);

if(score == 90){

th.install(120);

MAP++;

if(MAP == 4){

g.setColor(Color.black);

g.fillRect(0, 0, WIDTH, HEIGHT);

g.setColor(Color.YELLOW);

g.drawString("恭喜你通全关了!", 130, 180);

g.setFont(new Font("宋体", Font.BOLD, 30));

g.drawString("score:" + score, 10, 60);

th.pause();

}

else{

g.setColor(Color.black);

g.fillRect(0, 0, WIDTH, HEIGHT);

g.setColor(Color.YELLOW);

g.drawString("恭喜你过关了!", 130, 180);

g.drawString("下一关载入中...", 130, 280);

g.setFont(new Font("宋体", Font.BOLD, 30));

g.drawString("score:" + score, 10, 60);

try {

th.sleep(3000);

} catch (InterruptedException e) {

e.printStackTrace();

}

f.reAppear();

th.reStart();

}

}

}

public void stop() {

gameover = true;

}

public int getscore() {

return score;

}

public void setscore(int i) {

score = i;

}

public void processKey(int key, KeyEvent e) { if(MOVECHECK){

s.keyPressed(e);

MOVECHECK = false;

}

switch (key) {

case KeyEvent.VK_SPACE:

if (!th.isPause())

th.pause();

else

th.go_on();

break;

case KeyEvent.VK_F1:

th.reStart();

break;

case KeyEvent.VK_1:

th.install(300);

break;

case KeyEvent.VK_2:

th.install(200);

break;

case KeyEvent.VK_3:

th.install(120);

break;

case KeyEvent.VK_4:

th.install(90);

case KeyEvent.VK_5:

th.install(50);

break;

case KeyEvent.VK_F2:

MAP = MAP%3+1;

f.reAppear();

th.reStart();

break;

case KeyEvent.VK_F4:

STYLE = STYLE%2+1;

f.reAppear();

th.reStart();

break;

case KeyEvent.VK_F3:

SBODY = SBODY%2+1;

break;

default :

break;

}

}

}

4、Map.java

import java.awt.Color;

import java.awt.Graphics;

public class Map {

public static void draw(Graphics g){

Color old = g.getColor();

g.setColor(new Color(100, 0, 0));

switch (Yard.MAP) {

case 1://地图1

break;

case 2://地图2

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

g.fillRect(j*Yard.B_WIDTH, 10*Yard.B_WIDTH, Yard.B_WIDTH, Yard.B_WIDTH);

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

g.fillRect(j*Yard.B_WIDTH, 20*Yard.B_WIDTH, Yard.B_WIDTH, Yard.B_WIDTH);

case 3://地图3

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

g.fillRect(j*Yard.B_WIDTH, 10*Yard.B_WIDTH, Yard.B_WIDTH, Yard.B_WIDTH);

for (int j = 10; j < Yard.WIDTH/Yard.B_WIDTH-10; j ++)

g.fillRect(j*Yard.B_WIDTH, 20*Yard.B_WIDTH, Yard.B_WIDTH, Yard.B_WIDTH);

for (int j = 20; j < 26; j ++)

g.fillRect((Yard.WIDTH/Yard.B_WIDTH-10)*Yard.B_WIDTH,

j*Yard.B_WIDTH, Yard.B_WIDTH, Yard.B_WIDTH);

for (int j = 5; j < 10; j ++)

g.fillRect(10*Yard.B_WIDTH, j*Yard.B_WIDTH, Yard.B_WIDTH, Yard.B_WIDTH);

break;

default :

break;

}

g.setColor(old);

}

}

5、PaintThread.java

class PaintThread extends Thread {

private boolean pause = false;

private int speed = 120;

Yard y;

public PaintThread(Yard y) {

this.y = y;

}

public void go_on() {

this.pause = false;

}

public boolean isPause() {

return pause;

}

public void pause() {

this.pause = true;

}

public void reStart() {

this.install(120);

y.setscore(0);

this.pause = false;

y.s = new Snake(y);

y.setGameover(false);

}

public void install(int i) {

this.speed = i;

}

@Override

public void run() {

while (true) {

if (pause)

continue;

else

y.repaint();

try {

Thread.sleep(speed);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

public void setPause(boolean pause) {

this.pause = pause;

}

}

6、Node.java

import java.awt.Color;

import java.awt.Graphics;

import java.util.Random;

class Node {

int w = Yard.B_WIDTH;

int h = Yard.B_WIDTH;

int m;// 横格

int n;// 竖格

Dir d = Dir.L;

Node next = null;

Node pre = null;

Dir dir = Dir.L;

public Node(int m, int n, Dir dir) {

this.dir = dir;

this.n = n;

this.m = m;

}

void draw(Graphics g) {

Random r = new Random();

Color c = g.getColor();

if(Yard.SBODY==2)

g.setColor(new Color(230,0,0));

else

g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));

g.fillRect(Yard.B_WIDTH * m, Yard.B_WIDTH * n, w-2, h-2);

g.setColor(c);

}

}

7、KeyMonitor.java

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

public class KeyMonitor extends KeyAdapter {

@Override

public void keyPressed(KeyEvent e) {

int key = e.getKeyCode();

Yard y = (Yard) e.getSource();

y.processKey(key, e);

}

}

8、Test.java

public class Test {

public static void main(String[] args) { new Yard();

}

}

9、Dir.java

public enum Dir {

L, U, R, D

}

贪吃蛇游戏开发设计

广州商学院 课程论文题目:贪吃蛇游戏开发设计 课程名称面对对象程序设计 考查学期2016/2017学年第 1学期姓名陈思明李权康 学号201506110047 201506110044 专业计算机科学与技术 指导教师包汉宗

移植性和平台无关性等优点,得到了广泛地应用,它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的 接受和认可。 “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,四个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉 软件开发流程的目的。 关键词:贪吃蛇,Java,游戏

一、可行性分析 1.1经济可行性 游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件的水平的提高。游戏开发新技术层出不穷,经典游戏比比皆是,游戏这个名称一直存在于每个人的日常生活中。因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色.而从技术方面来看,现在的java技术也融入了手机中。这些都为开发的这款贪吃蛇游戏提供了条件。 1.2技术可行性 本次设计我将主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。 由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。

FLASH游戏之贪吃蛇游戏源代码

scorecommand("allowscale", "false"); fscommand("showmenu", "false"); loadedbytes=0; total=_root.getBytesTotal(); loadedbytes=_root.getBytesLoaded() if (loadedbytes==total){nextScene();} else{bfb=int((loadedbytes/total*100))+"%";} stop(); fscommand("allowscale", "false"); fscommand("showmenu", "false"); music=new Sound() music.attachSound("music"); music.stop() music.start(0,10000) musicstart=true onClipEvent(keyDown){ temp=Key.getCode(); if(!keyon){;} else if(game=="stop" and (temp==189 or temp==109)){ if (speed>1) { speed--; rate = speed;}} else if (game=="stop" and (temp==107 or temp==187)) { if (speed"start"){enter(); }else if(temp==Key.ENTER){ enter(); }else if (temp == Key.DOWN and y1>=0) { x1=0; y1 = 1; walk(); timestart() }else if (temp == Key.UP and y1<=0) { x1=0; y1 = -1; walk(); timestart() }else if (temp == Key.LEFT and x1<=0) {

1贪吃蛇可行性分析报告

软件设计与体系架构实验报告 学院:计算机科学与技术学院 学号:0121210680330 姓名:郭烨华 班级:sy1201 课题名:贪吃蛇游戏开发

贪吃蛇开发并进行动态分析 指导老师:陈明俊 组员:李安福 郭烨华 分工明细 成员分工: 职责姓名任务 项目分析经理、程序员李安福可行性分析,系统功能分析,编程 系统设计师、程序员郭烨华概要设计,开发设计、编程 目录 一、引言 (1)

1.1编写目的 (1) 1.2 编写主题 (1) 1.3 游戏运行环境 (1) 二、可行性研究的前提 (1) 2.1游戏基本功能 (1) 2.2 要求 (3) 2.3目标 (3) 2.4 进行可行性研究的方法 (3) 2.5 评价尺度 (4) 三、对现有系统的分析 (4) 3.1 处理流程和数据流程: (4) 3.2 工作负荷 (4) 3.3 人员.................................................................................................. 错误!未定义书签。 3.4 设备 (4) 3.5局限性 (4) 3.6 改进要求 (5) 四、所建议的系统 (5) 4.1 对所建议系统的说明 (5) 4.2处理流程和数据流程 (5) 4.3改进之处 (6) 4.4 影响 (6) 4.4.1对设备的影响: (6) 4.4.3 对用户单位机构的影响 (7) 4.4.4 对系统运行过程的影响 (7) 4.4.5 对地点和设施的影响 (7) 4.5 技术条件方面的可行性 (7) 五、可选择的其他系统方案 (7) 六、投资及效益分析 (8) 6.1支出 (8) 6.1.1 基本建设投资 (8) 6.1.2 其他一次性支出 (8) 6.1.3 非一次性支出 (8) 6.2 收益 (8) 6.2.1 一次性收益 (8) 6.2.2 非一次性收益 (8) 6.2.3 不可定量的收益 (8) 6.3 投资回收周期 (9) 6.4 敏感性分析 (9) 七、社会因素方面的可行性 (9) 7.1 法律方面的可行性 (9) 7.2 使用方面的可行性 (9) 八、结论 (9)

汇编语言写的贪吃蛇小游戏源代码

DATA SEGMENT dw 0,0 snk db 1 blk db 32 food db 3 tal1 db 4 tal2 db 2 adrs db 5 len db ? pst db ? addrs dw ? frow db ? fcol db ? hwrt db ? gmov db 'game over press r to restart press q to quit $' score1 db 'score :$' score2 db ? score0 db 1 zero db 48 writer db 'Developer: Geniusdot $' email db ': geniusdotgmail.$' msg1 db 'The way to play the game:$' way db ' press w to up ,press s to down,press a to left,press d to right$' msg db 'Press any key(except a,s,d,w) to start$' DATA ENDS STACK SEGMENT stack db 200 dup(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK start: mov ax,data mov ds,ax mov ax,0 mov es,ax mov frow,10 mov fcol,6 mov dh,10 mov dl,26 mov ah,2

int 10h mov ah,9 lea dx,msg1 int 21h mov dh,11 mov dl,7 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,way int 21h mov dh,12 mov dl,20 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,msg int 21h mov ah,0 int 16h mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,10 int 10h mov dh,0 mov dl,0 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,score1 int 21h mov dl,15 mov ah,2 mov bh,0 int 10h

贪吃蛇游戏开发与实现

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

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

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

贪吃蛇的设计与实现

《项目工程实践》课程结题报告 课题名称贪吃蛇的设计与实现 分数 日期:__2015__年_5_月_20_日

目录 目录 (2) 一、需求分析 (3) 二、概要设计 (3) 三、逻辑设计 (6) 四、应用程序 (10) 五、测试...................................................................................... 错误!未定义书签。 六、部分源程序代码

一、需求分析 本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求: (1) 利用方向键来改变蛇的运行方向。 (2) 空格键暂停或继续游戏,并在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。 二、概要设计 (1)游戏处理流程。 本次游戏处理流程如图1所示。 图 1 游戏流程设 计 进入游戏画面 单机“begin ”按钮,游戏 开始,蛇开始随即出现 键盘操作: “左移” “右移” “向下” “向上” 没有吃到实物且蛇碰到边界或者自身 游戏中途欲退出, 游戏结束 单击游戏界面上的“×”

(2)功能模块设计。 软件开发过程中的功能模块设计,主要解决实现该游戏需求的程序模块设计问题。包括如何把该游戏划分成若干个模块,决定各个模块之间的接口、模块之间传递的信息,以及模块结构的设计等。 (3)游戏功能 本系统主要完成一下几个方面的功能: 1. 游戏控制功能——包括游戏的开始、暂停、退出 2. 界面布局 3. 其他辅助功能 (4)总设计模块的划分 根据游戏游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2所示。 (5)游戏煮界面模块 游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮。游戏界面主框架的主要结构如图3所。 贪吃蛇游戏 游戏主界面模 块 游戏控制模块 图2游戏总设计模块 游戏的主界面框架 游戏图形区域界游戏控制按钮界 图3游戏主界面框架

基于JavaGUI的贪吃蛇游戏

开发背景 作为一个经典的游戏,贪吃蛇设计简单,实用和娱乐性高,是90后童年的美好回忆。对于贪吃蛇传统的玩法,大家众所周知,即:玩家通过控制游戏手柄上下左右四个方向控制蛇的前进方向,每当吃到一个东西就会增加相应的分数,蛇的身子会越吃越长,蛇身越长游戏的难度就越大,不能咬到自己的身体,也不能碰到墙壁,积累到一定分数就可以通过此关,进入到下一关。 需求分析 该次小游戏程序设计包含二维数组、方向键操作及图形化函数等方面知识。 具体需求概要如下: 1、游戏界面初始化,显示背景区域和活动区域 2、按方向键上下左右进行游戏的控制 3、当蛇头吃到食物时,蛇身长度加一,分数增加 4、当蛇头撞墙或者碰到自身时,游戏结束,显示“GAME OVER”和累加得分 里面存在的事物:地图、蛇、食物 游戏规则: 1.蛇初始化时是3个节点,一开始蛇是出现在地图中间位置的 2.蛇吃到食物会长一节 3.蛇咬到自己会死 4.蛇撞墙会死 5.食物随机生成的,食物不长在背景上,不长在蛇身上。 使用技术 本次课程使用JAVA来完成游戏的设计,使用二维数组存储背景信息,使用List存储蛇身信息,使用Swing完成图形界面化。 功能开发 概要设计 1、初始化模块:屏幕初始化,屏幕初始化用于显示游戏信息“贪吃蛇”。 2、游戏界面模块:设计边框和贪吃蛇活动区域

3、游戏运行模块:运用函数控制蛇长及吃食物关系,使用方向键控制方向。 4、判断模块:蛇头撞墙或者碰到自己身体,则游戏结束,显示分数 实现步骤 本节分为两个部分,一部分为核心逻辑,即算法处理逻辑;另一部分为界面搭建。游戏最核心的部分为算法逻辑部分。先讲算法逻辑,最后再进行界面的搭建。 第一部分分为几个小节 第二部分分为几个小节 创建工程 本次小游戏是一个单独的项目,所以需要创建单独的工程。 地图 首先定义地图的长宽,定义数组存放地图上的点 // 地图的宽(行) public static final int width = 35; // 地图的高(列) public static final int heigth = 8; //二维数组存放地图上的点 private char[][] background = new char[heigth][width]; 我们需要的地图为: 所以需要初始化地图,四周为墙壁,中间为空白部分,供蛇移动。这里使用’*’代表墙壁,使用’ ’代表空白部分。边界值判定:二维数组的第一行和最后一行,其余行的第一列和最后一列均为墙壁。 初始化方法: // 初始化地图 public void initBackground() { for (int rows = 0; rows < background.length; rows++) { for (int cols = 0; cols < background[rows].length; cols++) { if (rows == 0 || rows == (heigth - 1) || cols == 0 || cols == (width - 1)) { background[rows][cols] = '*'; } else {

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

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

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

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

贪吃蛇游戏实现思路及源代码

HTML5 贪吃蛇游戏实现思路及源代码 点评:游戏难点是怎么模拟贪吃蛇的移动。如果只是一个方块的话显然很简单。但是当蛇的长度变长之后要怎么样控制,下面为大家简要介绍下具体的实现,感兴趣的朋友可以参考下,希望对大家有所帮助 游戏操作说明 通过方向键控制贪吃蛇上下左右移动。贪吃蛇吃到食物之后会变长一个长度。 游戏具体实现 游戏难点是怎么模拟贪吃蛇的移动。如果只是一个方块的话显然很简单。但是当蛇的长度变长之后要怎么样控制 每个方块的移动呢? 如果观察蛇的移动,可以发现,从蛇的头部到尾部,每个方块在下一时刻的位置就是它的前一个方块在当前时刻 的位置。因此我们需要做的只是控制贪吃蛇的头部的运动。其他部分的位置都可以依次类推。 另外一个值得注意的问题是 贪吃蛇吃下食物之后,新增加的方块应该放在哪个位置。 答案就是在下一时刻,新增加的方块应该出现在当前时刻的尾部位置。 因此,在吃下食物之后应该在更新蛇的每个位置之前,增加一个方块,并且将其位置设定在当前时刻的尾部位置。 然后在当前时刻更新出了新增方块之外的所有方块的位置 index.html snake.js 复制代码代码如下: var canvas; var ctx; var timer; //measures var x_cnt = 15; var y_cnt = 15;

var unit = 48; var box_x = 0; var box_y = 0; var box_width = 15 * unit; var box_height = 15 * unit; var bound_left = box_x; var bound_right = box_x + box_width; var bound_up = box_y; var bound_down = box_y + box_height; //images var image_sprite; //objects var snake; var food; var food_x; var food_y; //functions function Role(sx, sy, sw, sh, direction, status, speed, image, flag) { this.x = sx; this.y = sy; this.w = sw; this.h = sh; this.direction = direction; this.status = status; this.speed = speed; this.image = image; this.flag = flag; } function transfer(keyCode) { switch (keyCode) { case 37: return 1; case 38: return 3; case 39: return 2; case 40: return 0; } } function addFood()

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

详细设计说明书 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,并实现重新显示

贪吃蛇小游戏源代码

#include #include #include #include int head=3 ,tail=0; int main() { int i,j,k=0; int zuobiao[2][80]; long start; int direction=77; int gamespeed; int timeover; int change(char qipan[20][80],int zuobiao[2][80],char direction); zuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao[1][1]=2;zuobiao[0][2]=1;zuobiao[ 1][2]=3;zuobiao[0][head]=1;zuobiao[1][head]=4; /*处理棋盘*/ char qipan[20][80];//定义棋盘 for(i=0;i<20;i++) for(j=0;j<80;j++) qipan[i][j]=' ';//初始化棋盘 for(i=0;i<80;i++) qipan[0][i]='_'; for(i=0;i<20;i++) qipan[i][0]='|'; for(i=0;i<20;i++) qipan[i][79]='|'; for(i=0;i<80;i++) qipan[19][i]='_'; qipan[1][1]=qipan[1][2]=qipan[1][3]='*';//初始化蛇的位置 qipan[1][4]='#'; printf("This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n"); printf("Input your game speed,please.(e.g.300)\n"); scanf("%d",&gamespeed); while(direction!='q') { system("cls"); for(i=0;i<20;i++)//打印出棋盘 for(j=0;j<80;j++) printf("%c",qipan[i][j]); timeover=1;

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

贪吃蛇游戏安卓源代码

附录1.SnakeView类 package com.example.android_snake.view; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Timer; import java.util.TimerTask; import com.example.android_snake.R; import com.example.android_snake.food.Food; import com.example.android_snake.snake.Body; import com.example.android_snake.snake.Head; import com.example.android_snake.snake.Snake; import com.example.android_snake.snake.SnakeDirection; import com.example.android_snake.stone.Stone; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.os.Handler; import android.util.DisplayMetrics; import android.view.Display; import android.view.MotionEvent; import android.view.View; import android.view.ViewManager; import android.view.WindowManager; import android.widget.Toast; public class SnakeView extends View { private Context context; private Bitmap headBitmap; private Bitmap bodyBitmap; private Bitmap foodBitmap; private Bitmap stoneBitmap; // 屏幕的高度和宽度 private int screenHeight; private int screenWidth; // 每个小格子的高度和宽度 private int eachHeight;

基于java的贪吃蛇游戏开发

贪吃蛇大战的设计与实现 专业: 姓名: 班级: 学号: 指导教师:

目录 前言 (4) 1.JAVA语言的概述及开发工具 (4) 1.1Java语言特点 (4) 1.1.1 平台无关性 (4) 1.1.3面向对象 (5) 1.2 J2ME介绍 (5) 1.3 关于ECLIPSE (6) 1.4 WTK介绍 (6) 2.需求分析 (7) 2.1游戏的介绍 (7) 2.2游戏开发的可行性 (7) 2.3设计目的 (7) 2.4游戏需求 (7) 2.4.1游戏界面需求 (8) 2.4.2游戏形状需求 (8) 2.4.3键盘事件处理 (8) 2.4.4显示需求 (8) 2.4.5接口控制 (8) 2.4.6环境介绍 (8) 3.详细设计 (9) 3.1 绘制蛇身 (9) 3.2创建初始“蛇”及“蛇”的移动 (9) 3.3 吃掉食物,蛇身增长 (10) 3.4随机产生食物 (10)

3.5键盘事件处理 (11) 3.6 判断游戏结束 (12) 4游戏测试与发布 (13) 4.1游戏运行的效果图 (13) 4.2 测试结果 (13) 5.自我评价和总结 (13) 5.1遇到的问题及解决办法 (13) 5.2 总结 (14) 6.参考资料 (14)

前言 随着3G的到来,让人们的目光聚集到一个新兴的互联网终端——手机上。手机的随身性让玩家有了随时随地完游戏的可能。据我调查行业分析师也对这一行业持普遍的乐观态度。yramid Researcher 的最新报告显示,手机游戏市场正在稳步发展。用户数从2008年的1.83亿到现在将增长到3亿。据报告分析,2014年,市场规模有望达到180亿美元。 手机游戏的发展有以下推动因素 1.更好更快的无限网络以及易于操作的手机终端改善了用户 的体验; 2..触摸屏,3D动画处理能力以及在线互动能力让游戏开发游 戏做的更好; 3.苹果应用商店模式刺激作用。 J2ME是一种针对移动电话和PDA这样的小型设备的Java语言。大部分的手机厂商都迫切希望Java手机推广应用。上千万的手机已经到了消费者手中。它已经极大的提高了移动电话支持游戏的能力。它有着比SMS或W AP 更好控制的界面。允许使用子图形动画。并且可以通过无限网络连接到远程服务器。支持Java的手机的普及,所以目前它成为最好的移动游戏开发环境。J2ME不是手机上配置的唯一解释语言,但是它是许多厂商支持的行业标准。一些专用的解释语言也在某些区域有上着上佳的表现。如北美的Qualcomm的BREM 和一些韩国运营上支持的名为GVM的标准。 基于以上分析,Java手机游戏的开发具有重要的意义。 1.Java语言的概述及开发工具 1.1Java语言特点 1.1.1 平台无关性 Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java 接口。Java的数据类型与机器无关。 1.1.2安全性

贪吃蛇游戏系统课程设计

一、课程设计的目的和要求 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:程序的不足之处

贪吃蛇游戏程序设计

测控技术与仪器专业课程设计题单 班级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.函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序 十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增

基于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图的属性做如下修改:

相关文档
相关文档 最新文档