てきとうな足跡
イラストやらバイトの事を書いている大学生のブログ
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Slick2d
1日の半分以上をプログラムとにらめっこしてるからクラスや型の
使い方が少しわかってきた気がする。

今回はSlick2dのアニメーション型の動作確認も兼ねて、よくある
上から落ちてくるアイテム拾うと点数上がるゲーム作った。
メロンは + 10点
ハートは + 50点、残機 + 1
爆弾は残機 - 1
(大きめに当たり判定取ってるので注意!)

act2.png

ソース・ダウンロードは「制作物まとめページ」に

今までは「Javaでゲーム作りますが何か? - 人工知能に関する断創録」の
「勇者は足踏みした」を参考にプレイヤーのアニメーションを実装してました。
http://aidiary.hatenablog.com/entry/20040924/1267886803


今回はSlick2dのAnimation型を使って実装。
実装方法は続きを読むから。(使い方間違ってるかもしれないけど・・・。)

参考:
http://slick.ninjacave.com/javadoc/org/newdawn/slick/Animation.html
http://thejavablog.wordpress.com/2008/06/08/using-slick-2d-to-write-a-game/

まずは初期化処理。
public void init() やコンストラクタに記述

使用した画像
char.png

Animation anime = new Animation(Image[] frames, int[] duration, boolean autoUpdate)
を使ってAnimation型を作成。
1つ目の引数はアニメーションで使う画像。
Animation moveStop には今回は口を閉じてる画像と左から2番目の上を向いてる画像を使用

2つ目の引数(int[] duration)は、画像の切り替わりにかかるフレーム数?
int[] duration なら、画像の枚数だけ引数をセット。

3つ目の引数の boolean autoUpdate は自動アニメーションする、しないの引数?
よくわかりません。

ソースの方は、
Player.java public
source1.png

Bom.java public
source2.png


次はアニメーションの再生
public void draw(Graphics g) {
anime.draw(x, y);
}

残念ながらこれだけでは再生されません。

更新処理の所に
anime.update(delta);
というアニメーションを更新する処理を追加しないと動きません。

引数は
public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException
のdelta渡してます。

ところでこの「delta」ってなんでしょうかねえ?
FPS関係なく、600数えたら1秒になるみたいです。

まとめると、こんな感じに。
Bom.java
source4.png

ドキュメントの方に、SpriteSheet使ったAnimationあるけど使い方がイマイチ不明。
スポンサーサイト
コメント
コメント
コメントの投稿
URL:
本文:
パスワード:
非公開コメント: 管理者にだけ表示を許可する
 
トラックバック
トラックバック URL
http://moromorocco.blog39.fc2.com/tb.php/320-0190c7db
この記事にトラックバックする(FC2ブログユーザー)
トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。