■ このスレッドは過去ログ倉庫に格納されています
C言語でアクションゲームが作りたい
- 1 :名前は開発中のものです。:02/05/03 18:22 ID:jHGxuzaQ.net
- …
- 71 :名前は開発中のものです。:02/08/11 02:55 ID:???.net
- >>70
http://game.2ch.net/test/read.cgi/gamedev/1028266779/119-120n
- 72 :_:02/08/11 19:46 ID:???.net
- >>64
天才プリグラマ
- 73 :_:02/08/11 20:03 ID:???.net
- 二次元のマップって普通1次元配列でするよね?
X方向120、Y方向100のマップがあったら
$define MAPX 120
$define MAPY 100
$define MAP_SIZE MAPX*MAPY
int main(void) {
int map[MAP_SIZE];
int x=0,Y=0;
for(i=0;i<MAP_SIZE;i++) map[i]=0;
// もし X:54 Y:33 の位置に1を代入したければ
x=54; y=33;
map[x+(y*MAPX)]=1;
・
・
・
・
}
でいいんだよね??
2次元使ったほうがいいかいな?
- 74 :名前は開発中のものです。:02/08/11 20:08 ID:???.net
- 1マス1オブジェクトなんてどうだろう?
- 75 :名前は開発中のものです。:02/08/11 20:12 ID:???.net
- >>73
うんいいよ。
- 76 :名前は開発中のものです。:02/08/11 23:35 ID:YyqnVN0I.net
- >>73
サイズが大きかったり可変長だったりすると配列ではなくalloc系で取得する
ことになるだろうし、1次元のほうがいいとおもう。
- 77 :名前は開発中のものです。:02/08/12 14:35 ID:???.net
- >>76
callocだと0クリアしてくれるから便利だよな
- 78 :名前は開発中のものです。:02/08/12 15:07 ID:???.net
- MAP面積がX:120 Y:100、ビュー面積(表示される面積)がX:16 Y:16。
map配列内には山や海などのイメージ番号が収納されている。
1ブロックの大きさが16*16ドットとするとブロック単位での全方向スクロールの処理は
$define MAPX 120
$define MAPY 100
$define VIEWX 16
$define VIEWY 16
$define MAP_SIZE MAPX*MAPY
int main(void) {
int i,m=0,x=0,y=0,map[MAP_SIZE]; // x,y変数はビューの左上を指す
while(1) {
m=key(); // key関数はテンキーからの入力を返す
if(m!=0) mapdraw(x,y,m); }
m=0; }
void mapdraw(int x,int y,int m) {
int nn;
if(m==8) y--;
if(m==6) x++;
if(m==2) y++;
if(m==4) x--;
for(i=0;i<VIEWY;i++) {
for(j=0;j<VIEWX;j++) {
nn=map[(x+j)+(y+(i*MAPX)];
put(img[nn],x+(j*16),y+(i*16)); // put関数はブロックを書く
} } }
でいいんじゃないかな?それよりもはよ、アクションゲーム作れや。1よ。
- 79 :作れ:02/08/12 15:17 ID:1r6GcreU.net
- ↑
1どっと単位でスクロールしたければ
ビュー画面より少し大きめのバックバッファ(裏画面)を作り、そこへブロックを配置する。
ようするにVIEWXとVIEWYの大きさをバックバッファ用に大きくしてやるだけ。
あとは元のビュー画面の大きさでクロップして表画面に出せば、はいおしまい。
楽勝だろ? さっさと作れ
- 80 :作れ:02/08/12 15:20 ID:1r6GcreU.net
- ちなみにエラールーチン入れとけよ(藁
X,Yが負なったり、(x+VIEWX)がMAPXをこえないようにするとか。
総レス数 268
70 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★