java多线程贪吃蛇实验报告_JAVA开放性实验报告贪吃蛇

本实验报告详述了使用Java编程实现贪吃蛇游戏的过程,包括创建窗体、图形模拟蛇的移动、设置障碍物和奖励,以及键盘事件处理。实验旨在提升对Java GUI、事件委托机制、多媒体技术及模块化设计的理解与应用。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gifJAVA开放性实验报告贪吃蛇

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值