前も書きましたが、回転の計算が面倒だったのですべて二次元配列にしたりなどだいぶ手抜きだったりしますが、そこら辺は気にしないでください。
完全自作のテトリスのソースです。
#include "DxLib.h"
#define B1A0 0
#define B1A90 1
#define B1A180 2
#define B1A270 3
#define B2A0 4
#define B2A90 5
#define B2A180 6
#define B2A270 7
#define B3A0 8
#define B3A90 9
#define B3A180 10
#define B3A270 11
#define B4A0 12
#define B4A90 13
#define B5A0 14
#define B5A90 15
#define B6A0 16
#define B6A90 17
#define B7A0 18
#define GameOver 19
#define Easy 20
int GetHitKeyStateAll_2(int KeyStateBuf[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i=5&&Key[KEY_INPUT_RIGHT]%5==0))){
for(i=0;i=5&&Key[KEY_INPUT_LEFT]%5==0))){
for(i=0;i1&&Key[KEY_INPUT_DOWN]%5==0)))){
for(i=0;i0;k--){
if(field[k][j]==1){
field[k][j]=0;
field[k+1][j]=1;
}
}
}
SCORE+=200;
LINE++;
}
judge=0;
}
DrawLine(20,15,214,15,BLUE);
//判定
for(i=0;i=0&&SCORE=500&&SCORE=1000&&SCORE=2000&&SCORE=3000&&SCORE=5000&&SCORE=10000&&SCORE=12000&&SCORE=14000&&SCORE=18000&&SCORE<20000){
LEVEL=10;
SPEED=6;
}
}
////////////////////////////////////////////////////////////////
if(GameFlag==GameOver){
SetBackgroundColor(0,0,0);
SetFontSize(20);
if(OldScore<SCORE){
HighScore=fopen("data\\HighScore.dat","w+");
fprintf(HighScore,"%d",SCORE);
DrawFormatString(80,120,BLUE,"ハイスコア %d",SCORE);
}
fclose(HighScore);
SetFontSize(50);
DrawString(80,50,"GAME OVER",BLUE);
SetFontSize(20);
DrawString(80,170,"Xキーでリプレイ",BLUE);
if(Key[KEY_INPUT_X]==1){
for(i=0;i<20;i++){
for(j=1;j<=13;j++){
field[i][j]=0;
}
}
SCORE=0;
LEVEL=1;
LINE=0;
GameFlag=Easy;
}
///////////////////////////////////////////////////////////////
}
ScreenFlip();
}
DxLib_End();
return 0;
}
メインファイルーTETRIS.exe
dataーHighScore.dat
imagesーblock.png
wall.png
というようにしてください。
imagesフォルダを作りその中に2つの画像を入れ、あとはdataフォルダを作ってください。
HighScore.datは自動で作成されるので作っておく必要はありません。
画像についてはファイル添付しておきます。
配布はここでしています。