[過去ログ]
Cでブロック崩しを作りたい (177レス)
Cでブロック崩しを作りたい http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
10: 名前は開発中のものです。 [] 03/12/16 11:49 ID:AbmLxMwB 唐突にやってみたくなった。今日は一日ヒマだし挑戦してみるか… http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/10
11: 10 [] 03/12/16 12:29 ID:AbmLxMwB 表示位置を指定するには ansi.sys ってのが必要なんだそうだ http://www.gaia.h.kyoto-u.ac.jp/users/izui/technotes/escape.html 上記サイトの情報を元にまとめてみた // ansi.sys用の画面操作 #define BLACK 0 #define RED 1 #define GREEN 2 #define YELLOW 3 #define BLUE 4 #define MAGENTA 5 #define CYAN 6 #define WHITE 7 #define clearScreen() printf("\x1b[0m\x1b[2J") #define setColor(f, b) printf("\x1b[0;1;3%d;4%dm", f, b) #define setColorDark(f, b) printf("\x1b[0;3%d;4%dm", f, b) #define setCursorPos(x, y) printf("\x1b[%d;%dH", y+1, x+1) #define displayCursor(disp) printf("\x1b[>5%c", disp ? 'l':'h') http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/11
14: 10 [] 03/12/16 13:03 ID:AbmLxMwB 速度の調整方法がわからない。やっつけで組んでみたがガタガタになる。 とりあえず後回しにしてロジックから組もう… #define FPS 60 void wait() { static long waitTime = 0; long count1, count2; int second; if(waitTime == 0) { second = time(NULL); while(second == time(NULL)); second = time(NULL); for(waitTime = 0; second == time(NULL); waitTime++) { for(count2 = 0; count2 < 0x10000; count2++); } waitTime /= FPS; } for(count1 = 0; count1 < waitTime; count1++) { second = time(NULL); for(count2 = 0; count2 < 0x10000; count2++); } } http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/14
15: 10 [] 03/12/16 13:13 ID:AbmLxMwB キーバッファを確認してあれば読み取り、余れば読み飛ばし、 6で右移動、4で左移動… あれ?「キーが離されて止まる」 ことが認識できない!? // キーボード入力 int getKey() { int result = 0; while(kbhit())result = getch(); return result; } http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/15
16: 10 [] 03/12/16 13:53 ID:AbmLxMwB // メイン int main( int argc , char *argv[]) { 〜〜〜初期化〜〜〜 while(true) { key = getKey(); if(key == 0x1b)break; 〜〜〜各種処理〜〜〜 wait(); } return 0; } http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/16
17: 10 [] 03/12/16 14:49 ID:AbmLxMwB //変数の宣言 int px, py;// パドルの位置 int pu ;// パドルの進行方向 // 座標系:256単位 = 全角1キャラクタ int bx, by;// ボールの位置 int bu, bv;// ボールの進行方向 int bs, bc;// ボールのスピードとウェイと用 int stock = 4;// ボールのストック char block[14][27] = {0};// ブロックテーブル int norma = 0;// 残りのブロック http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/17
18: 10 [] 03/12/16 19:27 ID:AbmLxMwB 連続投稿の制限あるんだな int x, y, key; displayCursor(0); clearScreen(); setColor(WHITE, WHITE); for(y=0; y<25; y++) { setCursorPos( 0, y); printf("■"); setCursorPos( 50, y); printf("■"); setCursorPos(y*2, 0); printf("■"); } for(y=0; y<6; y++)for(x=0; x<12; x++) { setColor(RED+y, RED+y); setCursorPos(x*4+2, y+3); printf("[##]"); block[x+1][y+3] = 1; norma++; } px = 26-4; py = 22; pu = 0; bx = 26; by = 21; bu = 1; bv = -1; bs = 4; bc = 0; http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/18
19: 10 [] 03/12/16 19:31 ID:AbmLxMwB // ボール移動 bc++; if(bc >= bs) { if(bx <= 2)bu = 1; if(bx >= 49)bu = -1; if(by <= 1)bv = 1; setColor(WHITE, BLACK); setCursorPos(bx, by); printf(" "); if(block[(bx+2+bu)/4][by]) { block[(bx+2+bu)/4][by] = 0; norma--; bs = norma/18 + 1; setColor(WHITE, BLACK); setCursorPos((bx+2+bu)/4*4-2, by); printf(" "); bu = -bu; }else bx += bu; if(block[(bx+2)/4][by+bv]) { block[(bx+2)/4][by+bv] = 0; norma--; bs = norma/18 + 1; setColor(WHITE, BLACK); setCursorPos((bx+2)/4*4-2, by+bv); printf(" "); bv = -bv; }else by += bv; bc = 0; } setColor(YELLOW, GREEN); setCursorPos(bx, by); printf("O"); http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/19
23: 10 [] 03/12/16 22:45 ID:AbmLxMwB これでおしまい // クリア判定 if(norma <= 0) { setColor(WHITE, RED); setCursorPos(17, 12); printf("ALL CLEAR"); for(x=0; x<60; x++)wait(); break; } http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/23
24: 10 [] 03/12/16 22:57 ID:AbmLxMwB このプログラムはWindows98で入力したが、WindowsXPではやはりまともに うごかない。ansi.sys を適用させるため config.nt や command.com の ショートカットをいじってみたが効果なし。どうやらWin32コンソール用に コンパイルしたのがいけないらしい。 LSI C-86試食版を落としてきたのでこちらでコンパイルしようとしている。 これどうやって使うんだろ? http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/24
25: 10 [] 03/12/17 00:09 ID:pfCf+iQ3 コンパイルできないのは拡張子がcppになっていたからだった。 コメントに//が使えないとか、long型を使用すべき場所でint型を使って いたとか、問題が多発。全体的に修正しよう。 http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/25
26: 10 [] 03/12/17 00:24 ID:pfCf+iQ3 さっそくWindowsXPで実行。しかし描画落ちしまくりでまともに映らない。 command.comを実行しただけでも、キーのレスポンスがものすごく悪い。 全画面化するとキー入力を全く受け付けない。 どういうこと?だれかHELP! cmd.exeは正常に動作している。 http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/26
27: 10 [] 03/12/17 00:42 ID:pfCf+iQ3 内部的には正常に動作しているっぽい。画面の更新が毎秒2〜3回しか 行われていないように見える。 http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/27
28: 名前は開発中のものです。 [sage] 03/12/17 01:05 ID:C3C73JZv >>10 Win32のコンソールでやりたかったら、ここら辺を参考にしれ。 ttp://www.kumei.ne.jp/c_lang/intro/no_61.htm http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/28
32: 10 [sage] 03/12/31 08:21 ID:Q4dsQ6aM >>28 API使っていいなら普通のウィンドウ出したほうが早いよ… ANSIでやりたかったんだ。でもありがとう。 http://mevius.5ch.net/test/read.cgi/gamedev/1070810517/32
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.008s