#ifndef eluosiwidget_h
#define eluosiwidget_h
#include
#include
#include
#include
#include
#include
#define rec_size 25 //方塊大小
#define scene_w 16 //場景列數
#define scene_h 10 //場景行數
enum direction;
typedef
struct rec_point;
class eluosiwidget : public qwidget
;#endif // eluosiwidget_h
#include "tetris.h"
int tx_code[4]=,,,,
,,};//圖形**
eluosiwidget::eluosiwidget(qwidget *parent)
: qwidget(parent)
eluosiwidget::~eluosiwidget()
void eluosiwidget::startgame() //初始化
void eluosiwidget::change(int x, int y, int num,int state) //設定本次位置資訊
scene_num[x][y]=state;
rpoint[0].pos_x = x;rpoint[0].pos_y = y;
if(258 == temp)
else
if(456 == temp)
}void eluosiwidget::clear(int x, int y, int num) //清除上次位置資訊
scene_num[x][y] =0;
}void eluosiwidget::weizhi(int x,int y,int tx,direction direct)
break;
case down://下移
for(int i=0;i<4;i++) //判斷是否允許下移
temp_flag = temp_flag && scene_num[rpoint[i].pos_x+1][rpoint[i].pos_y] !=1 &&
scene_num[rpoint[i].pos_x][rpoint[i].pos_y] !=1 && rpoint[i].pos_x+1
< scene_w;
if(temp_flag)else}}
//判斷是否結束遊戲
if(scene_num[0][y] == 1)
//判斷是否加難度
if(levelflag)
//重新構造乙個方塊
rpoint[0].pos_x = 1;rpoint[0].pos_y = scene_h/2;//設定主方塊位置資訊
rec_tx[0]=rec_tx[1];//隨機出現第乙個圖形
rec_tx[1] = rand()%7;
change(rpoint[0].pos_x,rpoint[0].pos_y,tx_code[rec_tx[0]][0],2);
temp_tx = 0;
}break;
case left://左移
for(int i=0;i<4;i++) //判斷是否允許左移
temp_flag = temp_flag && scene_num[rpoint[i].pos_x][rpoint[i].pos_y-1] !=1 && rpoint[i].pos_y-1 >=0;
if(temp_flag)break;
case right://右移
for(int i=0;i<4;i++) //判斷是否允許右移
temp_flag = temp_flag && scene_num[rpoint[i].pos_x][rpoint[i].pos_y+1] !=1 && rpoint[i].pos_y+1
< scene_h;
if(temp_flag)break;
case space://快速下移
for(int j=0;jfor(int i=0;i<4;i++) //判斷是否允許下移
temp_flag = temp_flag && scene_num[rpoint[i].pos_x+1][rpoint[i].pos_y] !=1 &&
scene_num[rpoint[i].pos_x][rpoint[i].pos_y] !=1 && rpoint[i].pos_x+1
< scene_w;
if(temp_flag)else
break;
}break;
}}void eluosiwidget::paintevent(qpaintevent *event)
else
if(scene_num[i][j] > 1)}}
}void eluosiwidget::timerevent(qtimerevent *event)
if(!pauseflag && timerid2==event->timerid()) this->update(); //重新整理繪圖
}void eluosiwidget::keypressevent(qkeyevent *event) //鍵盤事件
}void eluosiwidget::move(int hang, direction direct)
else
if(direct == down)
}void eluosiwidget::sethard(int level)
void eluosiwidget::setspeed(int level) //設定速度等級
void eluosiwidget::setlevel()
}void eluosiwidget::playgame()
void eluosiwidget::pausegame()
#include
int main(int argc, char *argv)
其他版本: 俄羅斯方塊高階 AI俄羅斯方塊
前文回顧 致青春 python實現俄羅斯方塊 人工智慧大火的今天,如果還是自己玩俄羅斯方塊未免顯得太low,為什麼不對遊戲公升級,讓機器自己去玩俄羅斯方塊呢?有了這個想法之後利用週六週日兩天的時間去蒐集了大量的資料,在電腦宕機好多次之後終於將ai俄羅斯方塊實現了。所謂讓機器自己去玩俄羅斯方塊,就是讓...
俄羅斯方塊
俄羅斯方塊 tetris,俄文 是一款風靡全球的電視遊戲機 和掌上遊戲機遊戲,它由俄羅斯人阿列克謝 帕基特諾夫 發明,故得此名。俄羅斯方塊的基本規則是移動 旋轉和擺放遊戲自動輸出的各種方塊,使之排列成完整的一行或多行並且消除得分。由於上手簡單 老少皆宜,從而家喻戶曉,風靡世界。俄羅斯方塊的開發者是阿...
俄羅斯方塊
include include include include includeusing namespace std include include define mem a,b memset a,b,sizeof a const int sudu 40 const int dir 4 2 cons...