JAVA开放性实验报告贪吃蛇

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JA V A程序设计开放性实验报告

专业:计算机科学与技术

班级:2012级2班

学号:

姓名:

实验2贪吃蛇游戏设计(4学时)

1.实验内容

(1)创建软件主窗体和相关控制菜单;在窗体中以图形模拟蛇的形状,使用键盘控制图

形在窗体中任意移动,模拟贪吃蛇的行为.

(2)在窗体中可以设置障碍或奖励物品,以达到游戏的娱乐性。

2.预习内容

Java GUI编程;鼠标和键盘的事件处理;Java多媒体编程。

3.实验类型

综合性

4.实验目的

(1)了解JavaGUI编程特别是窗体,菜单;熟悉Java的事件委托处理机制,能完成鼠标和键盘的事件处理;

(2)熟悉Java中的多媒体技术如:音频文件的播放控制,游戏中各种事件的音效添加。

熟悉Java中的绘图操作,可以使用绘图函数进行图形的绘制和重绘等基本操

作;

(3)熟悉模块的划分及游戏控制类的编写,了解相关的游戏设计和实现模式;

(4)设计可视化界面,添加其他必要组件,对窗体进行相应的键盘事件处理,使蛇能移动,依据实验内容结合自己的设计想法,实现模拟贪吃蛇的游戏效果。

5.实验要求

依据实验内容,编写相关类,实现所需软件功能。

6.实验过程(分析设计、源文件、执行结果)

代码如下:

1、Node类

public class Node {

private int x;

private int y;

public Node(){

}

public Node(int x,int y){

this.x=x;

this.y=y; }

public int getX(){

return x;

}

public void setX(int x){ this.x=x;

}

public int getY(){

return y;

}

public void setY(int y){

this.y=y;

}

public String toString(){//方便类型转换

//括号里不是String类型通过toString来转换,不然会输出一个地址

return"("+x+","+y+")";

}

@Override

//伪代码可以理解为注释,重写:下面的方法名是否在父类中存在,如果没有//的话会报错。

//

public int hashCode(){//假设Node 是list集合里面,只有把Node节点对象 //放在set 集合时候写hashCode();

final int prime = 31;

int result = 1;

result=prime*result+x;

result=prime*result+y;

return result;

}

@Override

//比较Node对象是否在同一坐标都要写上equals方法

public boolean equals(Object obj){

if(this==obj){

return true;

}

if(this==null){

return false;

}

if(getClass()!=obj.getClass())

return false;

Node other=(Node)obj;

if(x!=other.x){

return false;

}

if(y!=other.y){

return false;

}

return true;

}

}

2、Worm 类

import java.util.LinkedList;

public class Worm {

private LinkedList worm = new LinkedList();

int dir;

public static final int UP = -1;

public static final int DOWN = 1;

public static final int LEFT = -10;

public static final int RIGHT = 10;

public static final int ROWS = 400;//ROWS行。宽度范围,

public static final int COLS = 500;//COLS列。长度范围

public Worm() {

getWorm().add(new Node(90, 90));//第90行90列,蛇扩大10倍

getWorm().add(new Node(80, 90));

getWorm().add(new Node(70, 90));

getWorm().add(new Node(60, 90));

getWorm().add(new Node(50, 90));

dir = RIGHT;

}

public void step() {// 走一步

Node

head=getWorm().get(0);// 找到头节点

int x = head.getX() + dir / 10 * 10;//X,Y横坐标与纵坐标

int y = head.getY() + dir % 10 * 10;

if (x > 0 && x < Worm.COLS && y > 0 && y < Worm.ROWS - 30

相关文档
最新文档