プロが教える店舗&オフィスのセキュリティ対策術

C言語(C++ではない)でwindowAPIを使用してテトリスを作りたいんですけど・・・


テトリスのブロックをランダムで出力する方法
      ブロックを下に落とす方法と左右に動かす方法
      ブロックを回転させる方法
      ブロックが左右の壁にぶつかったらブロックを回転させないようにする方法
      ブロックを縦20行×横10行の枠内にに出ないようにするには?
      ブロックが一番下に行ったら、そこで止まるようにする方法と次のブロックを出現させる方法
      
これらを教えてもらいたいんですけどよろしいですか?
出来れば早めにお願いします。

A 回答 (5件)

・テトリスのブロックをランダムで出力する方法


C言語の標準関数でよければ、rand()というものがあります。
例えばブロックが5種類の場合、各ブロックに番号を割り当てておきます。
int num = rand()%5;
とすれば0~4の値が返ってくるので、次に出すブロックが決まります。

・ブロックを下に落とす方法と左右に動かす方法
http://www.geocities.jp/ky_webid/win32c/025.html
キーを押した時、離した時を検知してくれるようです。
例えばWM_KEYDOWNしたら落ちる速度があがる、WM_KEYUPしたら元に戻る。
とすれば押しっぱなしも表現できます。
    • good
    • 0

自分はプログラミングに関して知識ゼロせすが、作った方の動画がニコニコ動画にありました



【プログラミング】テトリスを1時間強で作ってみた【実況解説】
http://www.nicovideo.jp/watch/sm8517855

参考にどうでしょうか。
    • good
    • 0

それだと殆ど全てだとおもいますので、下記サイトを読んでください。


「ゲーム&その他プログラミング【Windowsプログラミング研究所】」
http://www13.plala.or.jp/kymats/study/game_other …
    • good
    • 0

やり方はいろいろとあると思いますが、20x10のメモリマップ(との表現が適切かわかりませんが)を持って、今画面に表示している情報をメモリ上にも持つことです。


20x10の中の1つは、構造体にして必要な情報を詰め込んでもいいでしょうし、またintegerの20x10メモリマップをたとえば色情報や形状情報(?)など個別に持ってもいいと思います。

考え方としては、たとえばもし自分が目の前に本当のブロックがあり、それを自分が手操作でやる場合にどうするかで考えればいいと思います。
(あるいは方眼紙に書いてやることを想定するとか)
つまり、自分が覚えておかなければいけない情報は、すべてメモリー上に持つ必要があると言うことです。

初心者ほど、メモリーの使用を最小限にするやプログラムステップ数を少なくして速度を速くすることに気をとらわれがちですが、メモリーなどドンドン使って構わないので、まずは動くものを作ることが大切です。

あと、もしWindowsAPIが難しかったら、最初はDOS窓に「■」に色を付けてテキストでやってみると考えやすいのではないでしょうか。
    • good
    • 0

まずは,データ構造を考えないといけませんね。


ブロックをどう表現するか。
壁や床をどう表現するか。

↓テトリスの作り方
http://www13.plala.or.jp/kymats/study/game_other …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!