
JAVA程序设计 开放性实验 告 专 业: 计算机科学与技术 班 级: 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 getWorm().removeLast();//删除 } else { dir = 100; throw new RuntimeException(“你错了!“); } } public void step(int dir) {// 控制蛇走的方向 this.dir = dir; step(); } public LinkedList getLinkedListWorm() { return getWorm(); } public String t
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93751 人正在系统学习中 相关资源:snake:蛇-恶意软件存储动物园-其它代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!