亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

桌面彈球--學習筆記(一)

系統 2588 0

?

游戲規則:

在桌面彈球游戲中,玩家通過控制一個可以左右移動的擋板去阻止彈球落地。

當彈球與擋板碰撞,發生反彈后,如果與磚塊碰撞,該磚塊就會被消除掉。注意其中有一些磚塊是有魔法的。

當有魔法的磚塊被消除掉時,就會有一個道具落下,道具有兩種,分別可以使擋板變長和變短。

如果擋板接住了道具,魔法就會起效。

當所有的磚塊都被消除掉后,玩家就勝出,如果彈球球落下時沒有被擋板接住,本輪游戲就失敗了。

?

?

在游戲中,有擋板、彈球、磚塊、道具這四種游戲對象,磚塊是固定不動的,擋板的移動是由玩家通過鍵盤控制的,彈球和道具也是運動的。這些游戲對象都有共同的特性,有自己的位置,即 x y 坐標,有圖片屬性,有速度屬性。
桌面彈球--學習筆記(一)

?

BallComponent 作為 Brick (磚塊)類、 Magic (道具)類、 Stick (擋板)類、 Ball (彈球)類的父類,包含了上面提到的幾個共有的屬性。當然,在 BallComponent 中至少要有一些獲取和設置屬性的方法,為了簡單明了,圖中并沒有標出。


桌面彈球--學習筆記(一)

?

Magic(道具)類(該類中有一個用于使道具功能實現的抽象方法,供子類實現),道具類的子類有LongMagic和ShortMagic,作用是使擋板的長度變長或者變短,由magicDo(Stick stick)來實現。

確定了游戲對象各類后,還需要一個BallFrame類,一個畫板類(BallPanel),一個BallService類來處理與游戲相關的業務邏輯。

?

下面分別思考下Brick(磚塊)類、Stick(擋板)類、Magic(道具)類、Ball(彈球)類、LongMagic類、ShortMagic類該如何定義。

?

Brick(磚塊)類的屬性定義:

?

    // 定義道具,1表示變長道具,2表示變短道具
private Magic magic = null;
public static final int MAGIC_LONG_TYPE = 1;
public static final int MAGIC_SHORT_TYPE = 2;

// 定義一個boolean變量標記磚塊是否有效,如果無效就不繪制在畫板上
private boolean disable = false;
  

?Brick(磚塊)類的構造方法:

    public Brick(String path, int type, int x, int y) throws IOException {
		super(path);
		if (type == Brick.MAGIC_LONG_TYPE) {
			this.magic = new LongMagic("img/long.gif", x, y);
		} else if (type == Brick.MAGIC_SHORT_TYPE) {
			this.magic = new ShortMagic("img/short.gif", x, y);
		}
		if (this.magic != null) {
			this.magic.setX(x);
			this.magic.setY(y);
		}
	}
  

?

注意構造方法的參數中,path指的是磚塊圖片地址;type指的是磚塊的類型,0表示普通磚塊,1表示有變長魔法的磚塊,2表示有變短魔法的磚塊;x,y分別表示道具的x,y坐標。

?

Stick(擋板)類的屬性定義:

    // 定義檔板移動的速度
public static final int SPEED = 20;
// 定義檔板初始的長度
private int preWidth = 0;
  

?

?Stick(擋板)類的構造器:

    /**
	 * 有參數構造器
	 * 
	 * @param panelWidth
	 *            int 畫板寬度
	 * @param panelHeight
	 *            int 畫板高度
	 * @param path
	 *            String 圖片路徑
	 */
	public Stick(int panelWidth, int panelHeight, String path)
			throws IOException {
		// 調用父構造器
		super(panelWidth, panelHeight, path);
		// 設置y坐標
		this.setY(panelHeight - super.getImage().getHeight(null));
		// 設置原本的長度
		this.preWidth = super.getImage().getWidth(null);
	}
  

?

可以看到,利用構造器,可以把擋板定位在畫板的底部。彈球類(Ball)的構造器與擋板類(Stick)的構造器很類似,彈球的初始狀態是正好在擋板的正上方。

?

Ball(彈球)類的屬性定義:

    // 定義球的豎向速度
private int speedY = 10;
// 定義彈球的橫向速度
private int speedX = 8;
// 定義是否在運動
private boolean started = false;
// 定義是否結束運動
private boolean stop = false;
  

?

Magic(道具)類,LongMagic類、ShortMagic類的定義沒有太大難度,關鍵是magicDo(Stick stick)的實現。

?

桌面彈球--學習筆記(一)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产一区视频在线 | 中文字幕网在线 | 亚洲欧美中日韩中文字幕 | 欧美一区二区三区成人看不卡 | 亚洲欧洲日产国码久在线观看 | 手机看片福利视频 | 四虎成人免费视频 | 黄色视屏在线免费观看 | 天天操天天射天天爽 | 亚洲国产人久久久成人精品网站 | 国产一区二区三区乱码网站 | 久草久草在线 | 日韩欧美a级高清毛片 | 国产二级片 | 亚洲免费精品视频 | 美女bbxx美女bbb| 国产成人看片免费视频观看 | 免费中文字幕在线 | 九九久久九九 | 亚洲福利社 | 久久精品一区二区影院 | 97婷婷狠狠成人免费视频 | 日本综合视频 | 欧美日韩99 | 99精品在线免费 | 91亚洲精品国产自在现线 | 精品视自拍视频在线观看 | 羞羞视频免费网站 | 夜夜操免费视频 | 亚洲韩国欧美 | 伊人一级| 久久成人国产精品免费 | 91精品国产91 | 成人影院高清在线观看免费网站 | 国产精品日韩欧美一区二区三区 | 色哦色哦哦色天天综合 | 欧美α片无限看在线观看免费 | 欧美一区二区日韩一区二区 | 国产大片91精品免费观看不卡 | 四虎国产精品永久在线网址 | 日韩黄色网址 |