今、swingでゲームを作っています。
イメージとしては、青鬼のような感じです。
画像を移動するメソッドがおかしいようなので見ていただけますか?
中央のアイコンが、指定した座標よりもすこし右下に表示されてしまいます。
機能は、キャラクターを右に動かすと、アイコンの座標が右に1pxとバックグラウンドの画像が左に2pxの、合計3pxずつ動くようになっています。
下に書いたメソッドでは、キャラクターのバックグラウンドに対する座標を引数で指定して、それをもとにバックグラウンドの座標を計算しています。
java
1//class MyGameSample 2 3int width; //画面の幅 4int height; //画面の高さ 5ImageIcon[] bgimg; //バックグラウンドの画像(1440px*810px) 6JLabel centerLabel; //bgimgを表示している。 7ImageIcon[] charIcon; //bgimgの上で動くアイコン(73px*73px) 8JLabel charLabel; //charIconを表示している。 9int nowStage; //今表示しているステージの番号 10int h; //bgimgの座標 11int v; //bgimgの座標 12int charH; //bgimgの左端からcharIconの中央までの距離(Horizon) 13int charV; //bgimgの上端からcharIconの中央までの距離(Vertical) 14int[] startingPoint; //一つ目はcharHの開始位置、2つめはcharVの開始位置 15 startingPoint[0] = bgimg[nowStage].getIconWidth() / 2; 16 startingPoint[1] = bgimg[nowStage].getIconHeight() / 2; 17 18/************************************************************************************************/ 19public void setCharPoint(int right, int top){ 20 21 charH = right; 22 charV = top; 23 h = (width - bgimg[nowStage].getIconWidth()) / 2 + (startingPoint[0] - charH) / 3 * 2; 24 v = (height - bgimg[nowStage].getIconHeight()) / 2 + (startingPoint[1] - charV) / 3 * 2; 25 centerLabel.setBounds(h, v, bgimg[nowStage].getIconWidth(), bgimg[nowStage].getIconHeight()); 26 charLabel.setBounds(h + charH, v + charV, charIcon[0].getIconWidth(), charIcon[0].getIconHeight()); 27}
javaファイルなどここからダウンロード
レンタルサーバーにzipファイルをアップロードしてあります。
ブラウザから「一般にダウンロードされておらず、危険です」と出る場合がありますが、危険ではありません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。