第18講 テトリス開発(完成まで)
第2話 スペースキーでブロックを時計方向に90°回転させる
スペースキーでブロックを時計方向に90°回転させるコード例(変更部分だけ記載)
void block(){
  int i,j,l;
  y=(GetNowCount()-hajimenojikoku)/200;
  char h;
  if (jyu(KEY_INPUT_Z) != 0){
    h=1;
    for(i=0;i<4;i++){
      if(chizumodosu[x+p[s][k][i]-1][y+q[s][k][i]]==0){
        h=0;
        break;
      }
    }
    if(h==1)x--;
  }
  
  if (jyu(KEY_INPUT_C) != 0){
    h=1;
    for(i=0;i<4;i++){
      if(chizumodosu[x+p[s][k][i]+1][y+q[s][k][i]]==0){
        h=0;
        break;
      }
    }
    if(h==1)x++;
  }

  if(jyu(KEY_INPUT_SPACE) != 0){
    h=1;
    for(i=0;i<4;i++){
      if(chizumodosu[x+p[s][(k+1)%4][i]][y+q[s][(k+1)%4][i]]==0){
        h=0;
        break;
      }
    }
    if(h==1)k=(k+1)%4;
  }

  
  for(i=0;i<4;i++){
    //sはブロックの種類 0:長方形 1:正方形 2:L字 3:N字
    //kは回転状態 0:元の状態 1:90°回転 2:180°回転 3:270°回転
    if(chizumodosu[x+p[s][k][i]][y+q[s][k][i]]==1){
      if(y+q[s][k][i]>0)chizu[x+p[s][k][i]][y+q[s][k][i]] = 2 + s;
    }
  }
  for(i=0;i<4;i++){
    for (j = 0; j < 12; j++) {
      for (l = 0; l < 27; l++) {
        if (chizu[j][l] == 2 + i) {
          if(i==0)  DrawBox(20 * j, 20 * l, 20 * (j + 1) - 1, 20 * (l + 1) - 1, kiiro, true);
          if(i==1)  DrawBox(20 * j, 20 * l, 20 * (j + 1) - 1, 20 * (l + 1) - 1, mizuiro, true);
          if(i==2)  DrawBox(20 * j, 20 * l, 20 * (j + 1) - 1, 20 * (l + 1) - 1, aka, true);
          if(i==3)  DrawBox(20 * j, 20 * l, 20 * (j + 1) - 1, 20 * (l + 1) - 1, ao, true);
        }
      }
    }
  }
  h=1;
  for(i=0;i<4;i++){
    if(y+q[s][k][i]+1>0 && chizumodosu[x+p[s][k][i]][y+q[s][k][i]+1]==0){
      h=0;
      break;
    }
  }
  if(h==0){
    for(i=0;i<4;i++)chizumodosu[x+p[s][k][i]][y+q[s][k][i]]=0;
    t=0; //0:作動 1:作動停止
    hajimenojikoku=GetNowCount();
  }
  for(i=0;i<4;i++){
    if(y+q[s][k][i]==1 && chizumodosu[x+p[s][k][i]][y+q[s][k][i]]==0){
      m=2;
    }
  }
}
コピペ用添付ファイル

次の課題です。
それは、下からブロックがきれいにそろった場合に、
そろった部分を消すです。
009
つまり赤い囲いの部分を消すです。
当然消えた部分だけ、ピンクの囲いが下へスライドしなければなりません。
これも新社員void kesu()を雇い、
この社員にやらせて下さい。
消すか消さないか判断もkesu()が行うこととします。




第1話へ  第3話へ
a

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

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

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