java多线程贪吃蛇实验报告_JAVA开放性实验报告贪吃蛇
JAVA開放性實(shí)驗(yàn)報(bào)告貪吃蛇
JAVA程序設(shè)計(jì) 開放性實(shí)驗(yàn)報(bào)告 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí): 2012級(jí)2班 學(xué) 號(hào): 姓 名: 實(shí)驗(yàn)2貪吃蛇游戲設(shè)計(jì)(4學(xué)時(shí)) 1.實(shí)驗(yàn)內(nèi)容 (1) 創(chuàng)建軟件主窗體和相關(guān)控制菜單;在窗體中以圖形模擬蛇的形狀,使用鍵盤控制圖形在窗體中任意移動(dòng),模擬貪吃蛇的行為. (2) 在窗體中可以設(shè)置障礙或獎(jiǎng)勵(lì)物品,以達(dá)到游戲的娛樂(lè)性。 2.預(yù)習(xí)內(nèi)容 Java GUI編程;鼠標(biāo)和鍵盤的事件處理;Java多媒體編程。 3.實(shí)驗(yàn)類型 綜合性 4.實(shí)驗(yàn)?zāi)康?(1)了解JavaGUI編程特別是窗體,菜單;熟悉Java的事件委托處理機(jī)制,能完成鼠標(biāo)和鍵盤的事件處理; (2)熟悉Java中的多媒體技術(shù)如:音頻文件的播放控制,游戲中各種事件的音效添加。熟悉Java中的繪圖操作,可以使用繪圖函數(shù)進(jìn)行圖形的繪制和重繪等基本操作; (3)熟悉模塊的劃分及游戲控制類的編寫,了解相關(guān)的游戲設(shè)計(jì)和實(shí)現(xiàn)模式; (4)設(shè)計(jì)可視化界面,添加其他必要組件,對(duì)窗體進(jìn)行相應(yīng)的鍵盤事件處理,使蛇能移動(dòng),依據(jù)實(shí)驗(yàn)內(nèi)容結(jié)合自己的設(shè)計(jì)想法,實(shí)現(xiàn)模擬貪吃蛇的游戲效果。 5.實(shí)驗(yàn)要求 依據(jù)實(shí)驗(yàn)內(nèi)容,編寫相關(guān)類,實(shí)現(xiàn)所需軟件功能。 6.實(shí)驗(yàn)過(guò)程(分析設(shè)計(jì)、源文件、執(zhí)行結(jié)果) 代碼如下: 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(){//方便類型轉(zhuǎn)換 //括號(hào)里不是String類型通過(guò)toString來(lái)轉(zhuǎn)換,不然會(huì)輸出一個(gè)地址 return“(“+x+“,“+y+“)“; } @Override //偽代碼可以理解為注釋,重寫:下面的方法名是否在父類中存在,如果沒(méi)有 //的話會(huì)報(bào)錯(cuò)。 // public int hashCode(){//假設(shè)Node是list集合里面,只有把Node節(jié)點(diǎn)對(duì)象 //放在set集合時(shí)候?qū)慼ashCode(); final int prime = 31; int result = 1; result=prime*result+x; result=prime*result+y; return result; } @Override //比較Node對(duì)象是否在同一坐標(biāo)都要寫上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列。長(zhǎng)度范圍 public Worm() { getWorm().add(new Node(90, 90));//第90行90列,蛇擴(kuò)大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);// 找到頭節(jié)點(diǎn) int x = head.getX() + dir / 10 * 10;//X,Y橫坐標(biāo)與縱坐標(biāo) int y = head.getY() + dir % 10 * 10; if (x > 0 getWorm().removeLast();//刪除 } else { dir = 100; throw new RuntimeException(“你錯(cuò)了!“); } } public void step(int dir) {// 控制蛇走的方向 this.dir = dir; step(); } public LinkedList getLinkedListWorm() { return getWorm(); } public String t
總結(jié)
以上是生活随笔為你收集整理的java多线程贪吃蛇实验报告_JAVA开放性实验报告贪吃蛇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SpringBoot后端+Vue之Ant
- 下一篇: python vimdiff_vimdi