基于Java語言的俄羅斯方塊游戲課程設(shè)計(jì)解讀_第1頁
基于Java語言的俄羅斯方塊游戲課程設(shè)計(jì)解讀_第2頁
基于Java語言的俄羅斯方塊游戲課程設(shè)計(jì)解讀_第3頁
基于Java語言的俄羅斯方塊游戲課程設(shè)計(jì)解讀_第4頁
基于Java語言的俄羅斯方塊游戲課程設(shè)計(jì)解讀_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于Java語言的俄羅斯方塊游戲課程設(shè)計(jì)學(xué)院:X專業(yè):X班級(jí):X姓名:X學(xué)號(hào):X指導(dǎo)老師:X摘要第一章 引 言1.1 設(shè)計(jì)的課題背景 1.2 研究課題的任務(wù),目的和意義 1.2.1 課題的任務(wù)1.2.2 課題的目的 1.2.3 課題的意義1.3 系統(tǒng)的主要功能和特色 1.3.1 系統(tǒng)的主要功能 1.3.2 系統(tǒng)的特色 第二章 系統(tǒng)需求分析 2.1 本課題研究現(xiàn)狀分析2.2 要解決的問題及解決方法 2.3 系統(tǒng)設(shè)計(jì)的主要內(nèi)容、目標(biāo) 2.3.1 系統(tǒng)設(shè)計(jì)的主要內(nèi)容 2.3.2 設(shè)計(jì)的目標(biāo) 2.4 使用的關(guān)鍵技術(shù) 第三章 系統(tǒng)的詳細(xì)設(shè)計(jì) 3.1 系統(tǒng)的總體系結(jié)構(gòu) 3.2 系統(tǒng)各模塊的界面設(shè)計(jì)及實(shí)現(xiàn)

2、3.2.1 主窗體程序模塊設(shè)計(jì)與實(shí)現(xiàn)3.2.2 方塊變換模塊設(shè)計(jì)與實(shí)現(xiàn) 3.2.3 滿行消除并計(jì)分模塊設(shè)計(jì)與實(shí)現(xiàn) 第四章 系統(tǒng)的安裝與測(cè)試 4.1 系統(tǒng)的安裝 4.1.1 系統(tǒng)的運(yùn)行環(huán)境 4.1.2 系統(tǒng)的安裝 4.2 系統(tǒng)的測(cè)試結(jié)束語參考文獻(xiàn)附錄:有關(guān)程序代碼摘要:在現(xiàn)代,高科技的飛躍開展,人們工作習(xí)慣的改變,特別是電腦的大量普及,人們生活節(jié)奏越來越快,一些有趣的桌面游戲已經(jīng)成為人們?cè)谑褂糜?jì)算機(jī)進(jìn)行工作或?qū)W習(xí)之余休閑娛樂的首選,而俄羅斯方塊游戲是人們最熟悉的小游戲之一。俄羅斯方塊是一款風(fēng)行全球的電視游戲機(jī)和掌上游戲機(jī)游戲,它由俄羅斯人阿列克謝·帕基特諾夫創(chuàng)造,故得此名。俄羅斯方塊的

3、根本規(guī)那么是移動(dòng)、旋轉(zhuǎn)和擺放游戲自動(dòng)輸出的各種方塊,使之排列成完整的一行或多行并且消除得分。由于上手簡(jiǎn)單、老少皆宜,從而家喻戶曉,風(fēng)行世界。 為此,我設(shè)計(jì)了一款簡(jiǎn)單的俄羅斯方塊JAVA游戲程序,以便更好的滿足廣闊電腦工作者閑暇之余的消遣,并且也讓我學(xué)到編程技術(shù)。關(guān)鍵字:俄羅斯方塊游戲、Java語言、編程第一章 引言設(shè)計(jì)的課題背景俄羅斯方塊是一款電視游戲機(jī)和掌上游戲機(jī)游戲,它由俄羅斯人阿列克謝·帕基特諾夫創(chuàng)造,故得此名。俄羅斯方塊的根本規(guī)那么是移動(dòng)、旋轉(zhuǎn)和擺放游戲自動(dòng)輸出的各種方塊,使之排列成完整的一行或多行并且消除得分。由于上手簡(jiǎn)單、老少皆宜,從而家喻戶曉,風(fēng)行世界。2021年2月2

4、2日,英國(guó)心理學(xué)家發(fā)現(xiàn),減肥者通過玩俄羅斯方塊,可以降低對(duì)富含脂肪的食物和零食的心理需求;嘗試戒煙者的煙癮也能得到遏制。本學(xué)期學(xué)習(xí)java程序后,對(duì)該語言有了更深了解,可以嘗試實(shí)現(xiàn)小程序的開發(fā)。因此利用所學(xué)知識(shí),編寫了俄羅斯方塊這一游戲,實(shí)現(xiàn)了它的局部簡(jiǎn)單功能。1.2 研究課題的任務(wù),目的和意義 1.2.1 課題的任務(wù) 本游戲開發(fā)的總體任務(wù)是實(shí)現(xiàn)游戲的可操作性,以及界面的美觀性。采用JAVA GUI編程實(shí)現(xiàn)界面以及事件的控制。用戶根據(jù)鍵盤的四個(gè)方向鍵控制翻轉(zhuǎn)、向左、向右、和向下操作。 1.2.2 課題的目的 用所學(xué)的Java知識(shí)編寫小游戲,學(xué)會(huì)使用Java中的相關(guān)知識(shí),熟練掌握開發(fā)程序的流程。

5、熟練使用eclipse軟件進(jìn)行Java編程,并進(jìn)行調(diào)試和測(cè)試。根本實(shí)現(xiàn)俄羅斯方塊的根本功能。1.2.3 課題的意義 本課題的選擇,完成后,可方便人們進(jìn)行游戲的玩耍,開發(fā)相應(yīng)智力與推理能力。如果加以推廣,必將使人們?cè)诳菰锏臅r(shí)間有娛樂的游戲,使人們的生活更加豐富。1.3 系統(tǒng)的主要功能和特色 1.3.1 系統(tǒng)的主要功能 用戶根據(jù)鍵盤的四個(gè)方向鍵控制翻轉(zhuǎn)、向左、向右、和向下操作,每當(dāng)整一行全滿時(shí),自動(dòng)消除,并計(jì)分。 1.3.2 系統(tǒng)的特色 本次設(shè)計(jì)的游戲中增加了計(jì)分功能,可以方便游戲玩家查看分?jǐn)?shù),查看自己的實(shí)際水平。設(shè)計(jì)框圖:俄羅斯方塊游戲幫助新游戲暫停繼續(xù)退出關(guān)于總體界面:界面左側(cè)右側(cè)游戲區(qū)域計(jì)分

6、文字區(qū)域整體的大致效果:俄羅斯方塊游戲幫助游戲區(qū)域計(jì)分:好好學(xué)習(xí)課程。珍惜美好時(shí)光!第二章 系統(tǒng)需求分析 2.1 本課題研究現(xiàn)狀分析 俄羅斯方塊不僅有益智力,還能促進(jìn)手指靈活性。目前, 普及的程度相當(dāng)大,人們可以在閑暇時(shí)間娛樂。它趣味性強(qiáng),易上手,能滿足人們對(duì)它的娛樂要求。因此,俄羅斯方塊游戲,可以為用戶提供一個(gè)可在普通個(gè)人電腦上運(yùn)行的游戲,如果時(shí)間足夠,開發(fā)出 版俄羅斯方塊后,將更方便人們閑暇時(shí)玩耍。2.2 要解決的問題及解決方法 解決了程序太大不能進(jìn)行簡(jiǎn)單游戲娛樂的弊端,以相當(dāng)簡(jiǎn)單的代碼完成了相應(yīng)功能,解決了人們玩游戲不方便的弊端,使人們能隨意在任何地方都能娛樂,消遣空閑時(shí)間。2.3.1

7、系統(tǒng)設(shè)計(jì)的主要內(nèi)容 在eclipse英文LUNA版中編寫代碼,使用Java中Frame、Button等相關(guān)組件進(jìn)行合理的組合設(shè)計(jì),實(shí)現(xiàn)相應(yīng)效果,到達(dá)預(yù)期效果。2.3.2 設(shè)計(jì)的目標(biāo) 在編程完成后,可以利用鍵盤的上、下、左、右鍵,能夠?qū)崿F(xiàn)對(duì)游戲的控制,其中 表示方塊翻轉(zhuǎn), 表示方塊左移, 表示方塊右移, 表示方塊加速下降。游戲者在游戲時(shí)可以利用這四個(gè)鍵進(jìn)行相應(yīng)的操作,使其完成相應(yīng)變化,從而得到游戲者想要的形狀,以完成整行的匹配。第三章 系統(tǒng)的詳細(xì)設(shè)計(jì) 3.1 系統(tǒng)的總體系結(jié)構(gòu) 不同的隨機(jī)方塊會(huì)從區(qū)域上方緩慢落下, 能以90度為單位旋轉(zhuǎn)每一方塊,以一格為單位左右移動(dòng)方塊,讓方塊加速落下。 區(qū)域中橫

8、向格子方塊填滿,那么該行會(huì)自動(dòng)消除并為玩家的得分。 當(dāng)固定的方塊推到區(qū)域最上方,那么游戲結(jié)束。 編寫主方法,對(duì)所編寫的類進(jìn)行測(cè)試。方塊的消去,變換形狀通過編寫的成員方法實(shí)現(xiàn)。使用隨機(jī)函數(shù)確定每次掉落的方塊形狀。 使用ActionListiner響應(yīng)鍵盤事件。 3.2 系統(tǒng)各模塊的界面設(shè)計(jì)及實(shí)現(xiàn) 3.2.1 主窗體程序模塊設(shè)計(jì)與實(shí)現(xiàn)主窗體使用Frame窗體,在窗體上實(shí)現(xiàn)相應(yīng)功能。把菜單欄添加到窗體上。將不同菜單添加到菜單欄上,完成新游戲、暫停、繼續(xù)、退出等功能。相應(yīng)代碼如下:public class Game extends JFrame public Game() Tetrisblok a =

9、 new Tetrisblok(); addKeyListener(a); add(a); public static void main(String args) Game frame = new Game(); JMenuBar menu = new JMenuBar(); frame.setJMenuBar(menu); JMenu game = new JMenu("游戲"); JMenuItem newgame = game.add("新游戲"); JMenuItem pause = game.add("暫停"); JMen

10、uItem goon = game.add("繼續(xù)"); JMenuItem exit = game.add("退出"); JMenu help = new JMenu("幫助"); JMenuItem about = help.add("關(guān)于"); menu.add(game); menu.add(help); frame.setLocationRelativeTo(null);/ 設(shè)置窗口相對(duì)于指定組件的位置,null將其置為屏幕中間 frame.setDefaultCloseOperation(JFrame.

11、EXIT_ON_CLOSE);/關(guān)閉游戲 frame.setSize(220, 275); frame.setTitle("俄羅斯方塊"); frame.setVisible(true); frame.setResizable(false);/改變生成的窗體的大小,默認(rèn)為true(可改變) 3.2.2 方塊變換模塊設(shè)計(jì)與實(shí)現(xiàn) 共設(shè)置有7種不同的形狀,分別為I形、S形、T形、Z形、O形、J形、L形。相應(yīng)形態(tài)舉例如下:1.I形:2.O形3.T形4.L形5.J形 6.S形7.Z形相應(yīng)代碼如下:/ 方塊的形狀 方塊類型有S、Z、L、J、I、O、T共7種 private final

12、int shapes = new int / I類型 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 , 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 , / S形 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 1, 1, 0, 0,

13、 0, 1, 0, 0, 0, 0, 0, 0 , 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , /Z形 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 1, 1, 0, 0, 1

14、, 0, 0, 0, 0, 0, 0, 0 , / J形 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , / O形 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0,

15、0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , / L形 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , 0, 0, 1, 0, 1, 1, 1, 0

16、, 0, 0, 0, 0, 0, 0, 0, 0 , / T形 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 ; 3.2.3 滿行消除及計(jì)分模塊設(shè)計(jì)與實(shí)現(xiàn) 當(dāng)滿一整行后,需要自動(dòng)消除,并實(shí)現(xiàn)計(jì)分。規(guī)定每滿一行,總分加10分。相應(yīng)代碼如下:/ 滿一整行后消除,

17、并加分 public void delline() int c = 0; for (int b = 0; b < 22; b+) for (int a = 0; a < 12; a+) if (mapab = 1) c = c + 1; if (c = 10) score += 10; for (int d = b; d > 0; d-) for (int e = 0; e < 11; e+) maped = maped - 1; c = 0; 第四章 系統(tǒng)的安裝與測(cè)試 4.1 系統(tǒng)的安裝 4.1.1 系統(tǒng)的運(yùn)行環(huán)境 系統(tǒng)是在eclipse 的LUNA英文版本下進(jìn)行編寫

18、與調(diào)試的。4.1.2 系統(tǒng)的安裝 在eclipse官網(wǎng)直接下載、安裝eclipse,版本為eclipse-java-luna-SR2-win32-x86_64,在Myproject工作空間,text包下編寫、測(cè)試、執(zhí)行。4.2 系統(tǒng)的測(cè)試程序完成后,進(jìn)行系統(tǒng)測(cè)試后,到達(dá)了預(yù)期目標(biāo),能進(jìn)行簡(jiǎn)單的游戲,當(dāng)滿一整行時(shí),可以自動(dòng)消除,并實(shí)現(xiàn)計(jì)分功能。 鍵盤功能測(cè)試: 測(cè)試結(jié)果: 方向鍵“:實(shí)現(xiàn)了旋轉(zhuǎn)方塊; 方向鍵“:實(shí)現(xiàn)了方塊加速下落; 方向鍵“:實(shí)現(xiàn)了方塊左移; 方向鍵“:實(shí)現(xiàn)了方塊右移。結(jié)束語通過本次實(shí)驗(yàn),學(xué)習(xí)到了Java語言的精深,剛開始的時(shí)候,自己覺得不會(huì)做出理想的效果,但我一步一步慢慢的去做

19、,最后出來了相應(yīng)效果,雖然還需改良,我已覺得有了很大的成就感。雖然在實(shí)驗(yàn)過程中,遇到了許多的困難,但通過去查找資料,上網(wǎng)搜索,詢問同學(xué),問題都得到了解決。通過這次的學(xué)習(xí),使我對(duì)JAVA面向?qū)ο蟮木幊逃辛烁钜徊降牧私猓驗(yàn)檫@次的課程設(shè)計(jì),使我在今后的工作和學(xué)習(xí)中,更有信心去克服生活中的困難,積極處理問題。也使我相信,只要自己想做、想學(xué),就沒有完成不了的工作。參考文獻(xiàn):1唐大仕 Java程序設(shè)計(jì)修訂本.清華大學(xué)出版社,北京交通大學(xué)出版社,2劉慧寧,那盟.Java程序設(shè)計(jì)M.北京:機(jī)械工業(yè)出版社,2005,10:309-312.3朱喜福,趙敏,夏齊霄,等.java程序設(shè)計(jì)M.北京:人民郵電出版社,

20、2005,2:272-290.4百度百科、百度文庫(kù)中相關(guān)知識(shí).附錄:整個(gè)程序代碼:package text;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Game extends JFrame public Game() Tetrisblok a = new Tetrisblok(); addKeyListener(a); add(a); public static void main(String args) Game frame = new Game(); JMenuBar menu

21、= new JMenuBar(); frame.setJMenuBar(menu); JMenu game = new JMenu("游戲"); JMenuItem newgame = game.add("新游戲"); JMenuItem pause = game.add("暫停"); JMenuItem goon = game.add("繼續(xù)"); JMenuItem exit = game.add("退出"); JMenu help = new JMenu("幫助");

22、JMenuItem about = help.add("關(guān)于"); menu.add(game); menu.add(help); frame.setLocationRelativeTo(null);/ 設(shè)置窗口相對(duì)于指定組件的位置,null將其置為屏幕中間 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/關(guān)閉游戲 frame.setSize(220, 275); frame.setTitle("俄羅斯方塊"); frame.setVisible(true); frame.setResizabl

23、e(false);/改變生成的窗體的大小,默認(rèn)為true(可改變) / 創(chuàng)立俄羅斯方塊class Tetrisblok extends JPanel implements KeyListener / blockType 代表方塊類型 ,turnState 代表方塊狀態(tài) private int blockType; private int score = 0,i = 0; private int turnState; private int x,y; int j = 0; int flag = 0; / 定義已經(jīng)放下的方塊x=0-11,y=0-21; int map = new int1323;

24、 / 方塊的形狀 方塊類型有S、Z、L、J、I、O、T共7種 private final int shapes = new int / I類型 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 , 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 , / S形 0, 1, 1, 0, 1, 1, 0, 0, 0,

25、0, 0, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , /Z形 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 0, 1, 1, 0, 0, 0,

26、 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , / J形 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , / O形 1, 1, 0, 0, 1, 1, 0, 0, 0

27、, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , / L形 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 0, 1, 0, 0, 0,

28、 1, 0, 0, 0, 0, 0, 0 , 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , / T形 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 ; / 生成新方塊的方法 public void newb

29、lock() blockType = (int) (Math.random() *7 ) % 7;/7種類型之間進(jìn)行轉(zhuǎn)換 turnState = (int) (Math.random() *4 ) % 4;/每一類型的四種狀態(tài)間轉(zhuǎn)換 x = 4; y = 0; if (gameover(x, y) = 1) newmap(); drawwall(); score = 0; JOptionPane.showMessageDialog(null, "小伙伴,這局輸了,休息會(huì),去聽聽花開的聲音吧!"); /JOptionPane 是發(fā)出通知的標(biāo)準(zhǔn)對(duì)話框 / 畫出游戲區(qū)域 publ

30、ic void drawwall() for (i = 0; i < 12; i+) /底部 mapi21 = 2; for (j = 0; j < 22; j+) /左右兩邊 map11j = 2; map0j = 2; / 對(duì)游戲區(qū)域初始化,都置為0 public void newmap() for (i = 0; i < 12; i+) for (j = 0; j < 22; j+) mapij = 0; / 構(gòu)造方法 Tetrisblok() newblock(); newmap(); drawwall(); Timer timer = new Timer(10

31、00, new TimerListener();/控制下落速度,每隔一秒下落一格 timer.start(); / 旋轉(zhuǎn)的方法 public void turn() int tempturnState = turnState; turnState = (turnState + 1) % 4; if (blow(x, y, blockType, turnState) = 1) if (blow(x, y, blockType, turnState) = 0) turnState = tempturnState; repaint(); / 左移的方法 public void left() if (

32、blow(x - 1, y, blockType, turnState) = 1) x = x - 1; repaint(); / 右移的方法 public void right() if (blow(x + 1, y, blockType, turnState) = 1) x = x + 1; repaint(); / 下落的方法 public void down() if (blow(x, y + 1, blockType, turnState) = 1) y = y + 1; delline(); if (blow(x, y + 1, blockType, turnState) = 0)

33、 add(x, y, blockType, turnState); newblock(); delline(); repaint(); / 判斷產(chǎn)生的方塊是否合法 public int blow(int x, int y, int blockType, int turnState) for (int a = 0; a < 4; a+) for (int b = 0; b < 4; b+) if (shapesblockTypeturnStatea*4+b = 1)&&(mapx+b+1y+a=1)| (shapesblockTypeturnStatea*4+b=1)

34、&&(mapx + b + 1y + a = 2) return 0; return 1; / 滿一整行后消除,并加分 public void delline() int c = 0; for (int b = 0; b < 22; b+) for (int a = 0; a < 12; a+) if (mapab = 1) c = c + 1; if (c = 10) score += 10; for (int d = b; d > 0; d-) for (int e = 0; e < 11; e+) maped = maped - 1; c = 0;

35、 / 判斷游戲是否結(jié)束 public int gameover(int x, int y) if (blow(x, y, blockType, turnState) = 0) return 1; return 0; public void add(int x, int y, int blockType, int turnState) int j = 0; for (int a = 0; a < 4; a+) for (int b = 0; b < 4; b+) if (mapx + b + 1y + a = 0) mapx + b + 1y + a = shapesblockTypeturnStatej; j+; / 畫方塊的的方法 public void paintComponent(Graphics g) super.paintComponent(g); / 畫當(dāng)前方塊 for (j = 0; j < 16; j+) if (shapesblockTypeturnStatej = 1) g.fillRect(j % 4 + x + 1) * 10, (j / 4 + y) * 10, 10, 10); for (j = 0; j < 22; j+) for (i = 0; i < 1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論