忍者ブログ
Admin*Write*Comment
35歳からのC言語ゲームプログラミング
[1]  [2]  [3]  [4]  [5]  [6
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

乱数を得る①

2匹で一組のぷよを、Zキーを押すたびに組み合わせを変えて表示するプログラムを書こうとして、壁に当たった。
この処理は毎回落ちて来るぷよの組み合わせを変えるために、欠かせない処理だ。
しかし、僕の今までの勉強で乱数を得る処理は通っていなかった。

こんな時『苦C』の出番。
サイトの目次を見ると、ありますよー、乱数の項目が!

取り合えず、一番簡単な乱数生成方法を関数にして実装。
そのソースがこれだ。

#include "DxLib.h"
#include < stdlib.h >

int GetRandom ( int min, int max ); //乱数用関数のプロトタイプ宣言

int g_puyoimage[6];

int WINAPI WinMain(HINSTANCE hI,HINSTANCE hP,LPSTR lpC,int nC) {
ChangeWindowMode( TRUE );
    if( DxLib_Init() == -1 ) return -1;
 
    LoadDivGraph( "puyo.bmp",6,6,1,32,32,g_puyoimage );
    //1組目の組み合わせを乱数で決める
    int puyo1 = GetRandom( 1, 4);
    int puyo2 = GetRandom( 1, 4);

    SetDrawScreen( DX_SCREEN_BACK );

    while( ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0 ) {
       ClsDrawScreen();

      int key = GetJoypadInputState( DX_INPUT_KEY_PAD1 );
       if( key & PAD_INPUT_A ) {  //Zキーが押されるたびに組み合わせを乱数で変える
puyo1 = GetRandom( 1, 4);
          puyo2 = GetRandom( 1, 4);
       }

       DrawGraph( 288, 224, g_puyoimage[puyo1],TRUE );
       DrawGraph( 320, 224, g_puyoimage[puyo2],TRUE );
       ScreenFlip();
    }
  
DxLib_End();
return 0;
}

//乱数を得る関数
int GetRandom( int min, int max) {
return min + ( int )( rand()*( max-min+1.0 )/( 1.0+RAND_MAX ) );
}

無事に動いたけど、問題もある。
問題① 乱数の返す値が毎回同じになる。
問題② Zキーの押しっぱなしが有効になってしまって、一瞬押しただけで数回組み合わせが変る。

この問題を解決してみよう。

あ、そうそう、ぷよの色と対応する数字は合わせてあります。
赤、青、黄、緑の順に1、2、3、4で。
よって、1~4の間で乱数を得るプログラムになっていますヨン。

 

PR
と言うわけで、DXライブラリと覚えたてのC言語の知識を使って、『ぷよぷよ』の再現にチャレンジしてみようと思う。

目標地点は一人用のシンプルなぷよぷよ。(対戦とかは、まだ無理っしょ)
演出とか、グラフィックとか、音楽とか、外面を再現する趣旨では無いのでよろしく。
あくまで、本質のゲーム性の部分を作ってみようってことだ。

まず、ぷよぷよについてwikiで調べてみた。
なんせ遊んだのは相当昔のことなんで、ぷよって全部で何色だったっけとか、何個くっついたら消えるんだっけとか、縦横何マスのフィールドだったっけとか、ごく基本的なことを調べる必要があったのだ(笑)。
ここをメモ帳がわりに書いておこう。

フィールドは横6マス、縦12マス。
ぷよの色は4色で赤、青、黄、緑。
上下左右4方向で4個以上同色がつながると消える。
消えたマスには上のぷよが落ちてきて、そこでまた4個以上がつながると消える(連鎖)。

こんな感じ。
グラフィックハンドルや配列管理の都合上、色を数字で表現しておく

赤 = 1
青 = 2
黄 = 3
緑 = 4

で、非常に簡単にぷよのドット絵も描いた。
すいません・・・ま、ゲーム性の再現が目的ですので、絵はこんなレベルで勘弁してください(笑)。

puyo.jpg



ちなみに一番右のは消えるときに破裂する感じの絵です。微妙ですが・・・。
で、このぷよ達を画面中央に表示するプログラムを書いてみました。

RIMG0691.JPG









このソースではまだ色と番号があっていません。

ここから全てが始まる・・・かもしれない。





とりあえず、明日は家族でディズニーランドなんで、もう寝ます。


  • ABOUT
やってやれないことはないっ!たぶん・・・
  • カレンダー
06 2025/07 08
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
  • 最新コメント
[11/09 CALL MY NAME]
[11/09 erin]
[08/18 うずランド]
[07/11 うずランド]
[06/23 うずランド]
  • プロフィール
HN:
Call my name
年齢:
51
性別:
男性
誕生日:
1974/05/22
職業:
スロ屋店員
趣味:
いろいろ
自己紹介:
やる気だけはあるつもりです。
はい。
  • バーコード
  • ブログ内検索
  • カウンター
  • アクセス解析
Copyright © 35歳からのC言語ゲームプログラミング All Rights Reserved.*Powered by NinjaBlog
Graphics By R-C free web graphics*material by 工房たま素材館*Template by Kaie
忍者ブログ [PR]