第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;
}
}
}
コピペ用添付ファイル
次の課題です。
それは、下からブロックがきれいにそろった場合に、
そろった部分を消すです。
つまり赤い囲いの部分を消すです。
当然消えた部分だけ、ピンクの囲いが下へスライドしなければなりません。
これも新社員void kesu()を雇い、
この社員にやらせて下さい。
消すか消さないか判断もkesu()が行うこととします。
第1話へ 第3話へ
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ