資源簡介
一個超級強悍的游戲,可以幫助你們做課程設計用的,覺得可以,當年我也是這樣過來的,老師給很高分!

代碼片段和文件信息
import?java.awt.*;
import?java.awt.event.*;
import?java.util.Random;
import?javax.swing.Timer;
public?class?PinBall
{
//桌面寬度
private?final?int?TABLE_WIDTH?=?300;
//桌面高度
private?final?int?TABLE_HEIGHT?=?400;
//球拍的垂直位置
private?final?int?RACKET_Y?=?340;
//球拍高度
private?final?int?RACKET_HEIGHT?=?20;
//球拍寬度
private?final?int?RACKET_WIDTH?=?60;
//球的大小
private?final?int?BALL_SIZE?=?16;
//實例化一個窗口
private?frame?f?=?new?frame(“zzc*彈球游戲“);
//實例化一個隨機數生成器
Random?rand?=?new?Random();
//小球的縱向運動數度
????private?int?ySpeed?=?10;
?//返回一個-0.5到0.5之間的比率用控制小球運動方向
private?double?xyRate?=?rand.nextDouble()?-?0.5;
//這個橫向速度在-10到10之間,產生左右擺動運動效果
private?int?xSpeed?=?(int)(ySpeed*xyRate*2);
//小球開始的橫坐標位置,200表示產生0到100之間的隨機數
private?int?ballX?=?rand.nextInt(200)+20;
//小球開始的縱坐標位置
private?int?ballY?=?rand.nextInt(10)+20;
//球拍開始時的橫坐標位置
private?int?racketX?=?rand.nextInt(200);
//實力化一個畫布工具,集成Canvas類
private?MyCanvas?tableArea?=?new?MyCanvas();
//保存需要繪制圖形的字符串屬性
private?String?shape?=?““;
//聲明一個時間變量
Timer?timer;
//表示游戲是否結束
private?boolean?isLose?=?false;
public?void?init()
{
//定義畫布大小
???tableArea.setPreferredSize(new?Dimension(TABLE_WIDTHTABLE_HEIGHT));
???//添加畫布到窗口
???f.add(tableArea);
???//實例化一個鍵盤監聽事件適配器
???KeyAdapter?keyProcessor?=?new?KeyAdapter()
???{
??? //重寫適配器里面的按下某鍵盤方法
????public?void?keyPressed(KeyEvent?ke)
????{
???? //按下鍵盤左鍵時
?????if(ke.getKeyCode()==KeyEvent.VK_LEFT)
?????{
????? //球拍左邊框不能出畫布的左邊框
??????if(racketX?>?0)
??????//按一左鍵次向左移動10個像素
???????racketX?-=10;
?????}
?????//按下鍵盤右鍵時
?????if(ke.getKeyCode()==KeyEvent.VK_RIGHT)
?????{
????? //球拍右邊框不能出畫布的右邊框
??????if(racketX???????//按一次右鍵移動向右移動10個像素
???????racketX?+=10;
?????}
????}?
???};
???//給窗口添加鍵盤監聽器
???f.addKeyListener(keyProcessor);
???//給畫布添加鍵盤監聽器
???tableArea.addKeyListener(keyProcessor);
???//這里是實例化了一個監聽接口
???ActionListener?taskPerformer?=?new?ActionListener()
???{
??? //重寫這個接口里面的方法,判斷小球的位置
????public?void?actionPerformed(ActionEvent?evt)
????{
???? //保證小球橫向上在畫布之內運動
?????if(ballX<=0?||?ballX>=TABLE_WIDTH-BALL_SIZE)
?????{
????? //觸發反方向運動
??????xSpeed?=?-xSpeed;
?????}
?????//出了球拍的可擊打范圍
?????if(ballY>=RACKET_Y-BALL_SIZE&&(ballXracketX+RACKET_WIDTH))
?????{
????? //停止對監聽器的觸發
??????timer.stop();
??????
??????isLose=true;
??????//調用畫布的重繪方法
??????tableArea.repaint();//調用畫布的重繪方法
?????}
?????//小球在球拍之內,而其到達球拍的高度
?????else?if(ballY<=0||(ballY>=RACKET_Y-BALL_SIZE&&ballY>racketX&&ballX<=racketX+RACKET_WIDTH))
?????{
????? //上下方向改變,小球反彈
??????ySpeed=-ySpeed;
?????}
?????//小球的坐標在縱向上增加
?????ballY+=ySpeed;
?????//小球的坐標在橫向上的增加
?????ballX+=xSpeed;
?????//調用畫布的重繪方法3
?????tableArea.repaint();
????}
???};
???timer?=?new?Timer(100taskPerformer);//每隔0.1秒運行一次監聽器
???timer.start();//計時器開始運行
???f.addWindowListener(new?MyListener());//關閉窗口事件
???f.pack();//設置窗口最佳大小
???f.setVisible(true);//顯示窗口
}?
class?MyListener?extends?WindowAdapter//關閉窗口的類
{
???public?void?windowClosing(Window
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4560??2009-06-06?18:09??課程設計\PinBall.java
?????文件?????160256??2009-06-06?18:11??課程設計\ZZC.ppt
?????目錄??????????0??2009-06-06?18:11??課程設計
-----------?---------??----------?-----??----
???????????????164816????????????????????3
- 上一篇:手把手教會你微信公眾平臺自定義菜單開發——創建菜單
- 下一篇:cef.txt
評論
共有 條評論