第17講 テトリス開発(ゲームオーバー設定まで)第8話 座標xを壁に食い込まない範囲でランダムに設定

006を実現するコード例(変更部分だけ記載)
void gamemain(){ //ゲーム画面
  chizusakusei(); //地図作成(壁建設)
  if(t==0){
    s=rand()%4; //sはブロックの種類 0:長方形 1:正方形 2:L字 3:N字
    k=rand()%4; //kは回転状態 0:元の状態 1:90°回転 2:180°回転 3:270°回転
        
    if(s==0){
      if(k==0)x=1+rand()%8;
      if(k==1)x=1+rand()%10;
      if(k==2)x=2+rand()%8;
      if(k==3)x=1+rand()%10;
    }
    
    if(s==1){
      if(k==0)x=1+rand()%9;
      if(k==1)x=1+rand()%9;
      if(k==2)x=2+rand()%9;
      if(k==3)x=2+rand()%9;
    }

    if(s==2){
      if(k==0)x=1+rand()%9;
      if(k==1)x=1+rand()%8;
      if(k==2)x=2+rand()%9;
      if(k==3)x=3+rand()%8;
    }

    if(s==3){
      if(k==0)x=1+rand()%9;
      if(k==1)x=2+rand()%8;
      if(k==2)x=2+rand()%9;
      if(k==3)x=2+rand()%8;
    }
    
    t=1;
  }
  block(); //ブロックを描く
}
コピペ用添付ファイル

解説
うっかり勘違いしやすいので、
void gamemain(){ //ゲーム画面
  chizusakusei(); //地図作成(壁建設)
  if(t==0){
    s=rand()%4; //sはブロックの種類 0:長方形 1:正方形 2:L字 3:N字
    k=rand()%4; //kは回転状態 0:元の状態 1:90°回転 2:180°回転 3:270°回転
    s=0;
    k=0;

    
            ・
            ・
            ・
}
等と16通りのすべてパターンについて動作テストをする必要があります。

次の課題は、ブロックが天井に到達したら、
ゲームオーバにするということです。
008
今回はノーヒントにします。
賢い皆さんですから、
大丈夫ですよね。




第7話へ  第9話へ
a

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ