当前位置:首页 > Qt课程设计--贪吃蛇游戏设计
int s=data.size(); int ws=wdata.size(); int n;
//蛇头不能与蛇身重合 for(n=1;n
int bhx=data[n]->x(); int bhy=data[n]->y(); if(nhx==bhx&&nhy==bhy) {
QString word=\ Over!\\nEat yourself!So you die!\; GameOver(word); } }
//蛇头不能撞墙 for(n=1;n int wx=wdata[n]->x(); int wy=wdata[n]->y(); if(nhx==wx&&nhy==wy) { QString word=\ Over!\\nEat yourshit!So you die!\; GameOver(word); } } //蛇头与食物重合 if(nhx==food->x()&&nhy==food->y()) { if(data.size()>6) { for(int cc=0;cc<5;cc++) { data[data.size()-1]->setPalette(QPalette(QColor(130,130,130))); wdata.push_back(data[data.size()-1]); data.pop_back(); } } 13 food->hide(); food=getFood(); } //蛇头位置超过边界 if(nhx<0) { nhx=800; } if(nhx>800) { nhx=-20; } if(nhy<0) { nhy=480; } if(nhy>480) { nhy=-20; } //移动 s=data.size(); switch(dire) { case d_up:nhy-=20;break; case d_down:nhy+=20;break; case d_left:nhx-=20;break; case d_right:nhx+=20;break; default:break; } //后一个向前一个移动 for(int i=s-1;i>0;i--) { data[i]->move(data[i-1]->x(),data[i-1]->y()); } data[0]->move(nhx,nhy); } 14 //键盘操作 void deathsnake::keyPressEvent(QKeyEvent *e) { if(e->key()==Qt::Key_Up) { if(dire==d_down); else dire=d_up; } else if(e->key()==Qt::Key_Down) { if(dire==d_up); else dire=d_down; } else if(e->key()==Qt::Key_Left) { if(dire==d_right); else dire=d_left; } else if(e->key()==Qt::Key_Right) { if(dire==d_left); else dire=d_right; } else ; } //计时器 void deathsnake::timerEvent(QTimerEvent *e) { sec++; if(sec>9&&hou==0) { min++; jsq2->resize(128,128); jsq2->move(282,176); jsq->move(390,176); sec=0; clear=true; 15 } if(sec>9&&hou!=0) { min++; sec=0; } if(min>9) { hou++; jsq3->resize(128,128); jsq3->move(228,176); jsq2->move(336,176); jsq->move(444,176); min=0; sec=0; } jsq->setPixmap(QString::number(sec)+\); jsq2->setPixmap(QString::number(min)+\); jsq3->setPixmap(QString::number(hou)+\); if(time==20) { QString word=\ win!\; GameOver(word); } time-=2; timer->setInterval(time); data.push_back(snakeGrow()); if(clear==true&&wdata.size()>0) { wdata[0]->hide(); wdata.pop_front(); } } //游戏结束 void deathsnake::GameOver(QString go) { QMessageBox msg; 16
共分享92篇相关文档