Qt 俄羅斯方塊

2021-08-03 20:24:18 字數 3177 閱讀 7924

#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...