當前位置:編程學習大全網 - 源碼下載 - 求講解C++代碼原理,java小遊戲,急!有懸賞。

求講解C++代碼原理,java小遊戲,急!有懸賞。

首先聲明壹點,我學java可能比妳早不了多少(十壹假期之後開始), 所以有些地方分析的可能有錯誤。不過總體應該是正確的。

首先從mian方法入手,這是程序的入口。 ?先產生了壹個TestHoney對象,TestHoney派生於Frame類,mian裏首先用setSize等設置了這個窗口的屬性,這裏是背景顏色,大小,setVisible是使TestHoney顯示出來。 然後 Graphics g = th.getGraphics(); 得到Graphics的實例,由於Graphics是抽象類,不能直接用new Graphics()來產生對象。實際上此處th.getGraphics();獲得了Graphics的壹個子類的實例。然後產生壹個CannonBall的實例。下面進入循環中,循環裏先sleep(4),先睡4毫秒,也就是這個循環不能壹直連續執行,那樣CPU會瘋的。而且sleep(4)後執行壹次下面代碼,實現圖像的重繪與信息的檢測。每4毫秒重繪壹次很快了,其實不需要的。(補充壹點,這裏動起來的圖片是每4毫秒坐標變壹下在重新畫在屏幕上,由於間隔短,眼睛感覺不出來就感覺圖連續運動了)。。 sleep可能拋出異常,try,catch是捕獲異常的。cb.paint(g,x1);就是每4毫秒都要做的最主要的事情了。多加壹個x1參數是為了向Cannonball傳遞蘭橢圓x坐標值,來使 紅點 未發射 時保持與橢圓在壹起。

Cannonball類:

static int y=560,score=0;這裏的y應該是“子彈”,也就會是圖中“紅點”的y坐標(以像素為單位)。score是得分,int temp=240,應該是初始化的紅點的x坐標值,初始為240. ?然後得到

ClassLoader對象,主要用於下面AudioClip對象,也就是加載聲音文件時用的。 ?下面是paint方法,用於繪圖和判斷。首先定義了int t。根據後來的代碼知道t是用來記錄圖中那些黑點的行數的。 if(y==560) temp=x2; y等於560時說明 紅點 還沒有發射,由下面代碼也可以看到 紅點 打到黑點時也使y==560,,說明當 子彈 打到黑點時, 子彈 自動回到初始位置。下面就是作圖部分了,在指定位置畫圖。註意這裏有壹個y--,並且註意到paint方法是每4毫秒調用壹下,也就是每4毫秒y--,這就使 紅點 的y坐標減1,這就實現紅點向上運動。 下面是壹堆判斷,就是判斷 紅點 是否打到了 黑點 ,如果打到了,紅點回到初始位置(y=560),如果y==0也就是沒達到 黑點 ,打出了屏幕(程序窗口),也要回歸初始位置。

TestHoney類

static int a=200,是藍橢圓初始x的值。二位數組用於 黑點 的繪圖,等於1表示那個位置有黑點,否則沒有。同樣ClassLoader和AudioClip是用於產生聲音的。下面是兩個add LIstener。第壹個,addWindowListener就是對TestHoney加入窗口的監聽(因為TestHoney派生於Frame類,可以加入這個) ?裏面重寫了WindowAdapter裏的windowClosing方法,其實WindowAdapter這個類就是實現了WindowListener裏面的所有的抽象方法,不過都是空實現,也就是寫完方法聲明,下面加壹個{},{}裏什麽都不寫。如果不用WindowAdapter,直接用WindowListener,因為是抽象的,需要實現裏面所有的方法才能用,但是很多是對這個程序沒用的,比如裏面還有windowClosed方法等,對於這個沒用,但還是要寫,所以直接用WindowAdapter後,直接重寫要用的方法即可。 ?這裏重寫了windowClosing方法,就是實現了鼠標點擊程序右上角的紅“X”,實現關閉功能。不添加的話點 “X” 也不會關閉程序的。

下面addKeyLIstener,添加鍵盤的監聽,VK_RIGHT表示鍵盤上的“→”按鍵,即按“→”後,x1+=10;(藍色橢圓向右移動) 其他同理。 註意裏面有個repaint(),在public void Keypressed(KeyEvent e)裏面,這個方法是在鍵盤有 按鍵 按下時自動調用的,每次按下時調用壹次repaint(),也就是實現壹次重繪。這個方法是TestHoney從父類繼承來的,這裏好像沒寫,其實已經繼承來了,就是實現重繪,刷新圖像。

之後是paint()方法,就是把黑點按要求畫上去,沒什麽好說的。

總結起來,就是開始初始為如圖情況, 按“→”或“←”分別左右移動,按“SPACE”(就是空格按鍵)時發射,(按下後y=559,在Cannonball裏面判斷是只要y小於560就開始y--,實現 紅點 的不斷向上移動。) 紅點位置與黑點位置進行判斷,打到黑點後,紅點y變成560,即有回到橢圓上,黑點位置對應的二維數組的值變成0,表示那個地方沒有 黑點 。如果沒打到紅點由於y--不斷執行y最終到0,之後再次變為560,又回到橢圓上,完成了壹個循環。

每4毫秒重繪壹次,不斷更新。

  • 上一篇:學生管理系統php源碼誰有
  • 下一篇:《Lua程序設計》之 數值
  • copyright 2024編程學習大全網