亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? snake.cpp

?? 對貪食蛇程序進行了學習和簡單的模擬實現(xiàn)
?? CPP
字號:
/****************************************************************************
** 貪吃蛇程序說明:
**
** 上下左右控制方向,esc重新開始,P鍵暫停游戲
** 
** 游戲5個關卡,gamespeed為游戲速度,吃10個方塊進入下關,游戲暫停,按P鍵繼續(xù)
**
** QT3的代碼,供大家交流!
**
**                              --by snailshell   mail:youngst@yeah.net
****************************************************************************/


#include <qapplication.h>
#include <qpalette.h>
#include "snake.h"
#define N 100
#define LEFT 0x1012
#define RIGHT 0x1014
#define DOWN 0x1015
#define UP 0x1013
#define ESC 0x1000
#define PAUSE 0X50
struct Food{  
    int x;/*食物的橫坐標*/  
    int y;/*食物的縱坐標*/   
    int yes;/*判斷是否要出現(xiàn)食物的變量*/
   }food;
/*食物的結構體*/

struct Snake{  
    int x[N];   
	int y[N];  
	int node;/*蛇的節(jié)數(shù)*/  
	int direction;/*蛇移動方向*/   
	int life;/* 蛇的生命,0活著,1死亡*/
	}snake;
SnakeGame::SnakeGame(QWidget *parent,const char *name,WFlags f):QWidget(parent,name,f)
{
	
SnakeTime=new QTimer(this);
QObject::connect(SnakeTime,SIGNAL(timeout()),this,SLOT(SnakeRun()));
lcd =new QLCDNumber(5,this,"");

lcd->setSegmentStyle( QLCDNumber::Flat );
lcd->setFrameStyle( QFrame::NoFrame | QFrame::Plain );

InitGame();

}
void SnakeGame::paintEvent(QPaintEvent *event)
{
	
	QPainter paint( this );

    QRect v = paint.viewport();
    
    paint.setViewport( v.left() ,
			v.top() , width(), height());

	lcd->setGeometry(width()-100,5,100,30);
     DrawGame(&paint);
     PlayGame(&paint);
 
    


}
void SnakeGame::InitGame()
{
	

	pause=1;stage=1,score=0;gamespeed =400;key=0;
	setPaletteBackgroundColor(QColor(192,253,123)); 
	
SnakeTime->start(gamespeed,false);

food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/
   snake.life=0;/*活著*/
   snake.direction=1;/*方向往右*/
   snake.x[0]=50;snake.y[0]=100;/*蛇頭*/
   snake.x[1]=40;snake.y[1]=100;
   snake.node=2;/*節(jié)數(shù)*/
   }

void SnakeGame::SnakeRun()
{

update();

}

void SnakeGame::GameScore()
{
	
	lcd->display(score);
	
	
}
void SnakeGame::DrawGame(QPainter *painter)
{

painter->setPen( QPen(QColor( 41,75,35),1,Qt::SolidLine,Qt::RoundCap,Qt::RoundJoin)); 

for(i=0;i<=18;i+=2)/*畫圍墻*/
   {
     painter->drawRect(i,i+40,width()-2*i,height()-2*i-40); 
     
   }
 

}
void SnakeGame::PlayGame(QPainter *painter)
{
  

  GameScore();/*輸出得分*/
  
  if(food.yes==1)/*需要出現(xiàn)新食物*/
  {
      food.x=rand()%width()/2+20;
      food.y=rand()%height()/2+20+40;
      while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內,這樣才可以讓蛇吃到*/
  food.x++;
      while(food.y%10!=0)
  food.y++;
  food.yes=0;/*畫面上有食物了*/
  }
  if(food.yes==0)/*畫面上有食物了就要顯示*/
  {painter->setBrush( QColor(Qt::yellow ));
            
            painter->drawRoundRect(food.x,food.y,10,10,50,50);
  }
  if(snake.life==0&&pause==1)/*蛇移動*/
	  {
QString str;
str = QString( "GAME STAGE : %1" )
          .arg( stage);
painter->drawText(10,20,str);
 for(i=snake.node-1;i>0;i--)/*蛇的每個環(huán)節(jié)往前移動,也就是貪吃蛇的關鍵算法*/
         {
            snake.x[i]=snake.x[i-1];
     snake.y[i]=snake.y[i-1];
  }
    /*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/
		if(key==UP&&snake.direction!=4)
/*判斷是否往相反的方向移動*/
   snake.direction=3;
       else
   if(key==RIGHT&&snake.direction!=2)
      snake.direction=1;
   else
      if(key==LEFT&&snake.direction!=1)
  snake.direction=2;
      else
  if(key==DOWN&&snake.direction!=3)
     snake.direction=4;
 
         switch(snake.direction)
  {
     case 1: snake.x[0]+=10;break;
     case 2: snake.x[0]-=10;break;
     case 3: snake.y[0]-=10;break;
     case 4: snake.y[0]+=10;break;
  }

  
  for(i=3;i<snake.node;i++)/*從蛇的第四節(jié)開始判斷是否撞到自己了,因為蛇頭為兩節(jié),第三節(jié)不可能拐過來*/
  {
     if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
     {
               snake.life=1;
               break;
     }
        }
if(snake.x[0]<30||snake.x[0]>width()-40||snake.y[0]<70||
    snake.y[0]>height()-40)/*蛇是否撞到墻壁*/
{
  
     snake.life=1; /*蛇死*/

}   
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/
{
        painter->setBrush( QColor( 192,253,123));
        painter->drawRoundRect(food.x,food.y,10,10,50,50); /*把畫面上的食物東西去掉*/
    snake.x[snake.node]=-20;snake.y[snake.node]=-20;
          /*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/
    snake.node++;/*蛇的身體長一節(jié)*/
    food.yes=1;/*畫面上需要出現(xiàn)新的食物*/
    score+=10;
	
    GameScore();/*輸出新得分*/

	if(snake.node>10*stage+1&&stage<6)
		{
		stage+=1;
		gamespeed=gamespeed-100;
		pause=0;
		}/*關卡速度變快,游戲暫停*/

}
	
}
else	
{
	SnakeTime->stop();	

	if(pause==1)painter->drawText(10,20,"GAME  OVER!");
	else painter->drawText(10,20,"GAME  PAUSE!");
	
}/*游戲結束、暫停*/
painter->setBrush( QColor( Qt::red));painter->drawRoundRect(snake.x[0],snake.y[0],10,
               10,50,50);painter->setBrush( QColor( Qt::blue));
for(i=1;i<snake.node;i++)
     painter->drawRoundRect(snake.x[i],snake.y[i],10,
               10,50,50);/*畫出蛇*/

 painter->setPen( QPen(QColor( QColor(192,253,123)),1,Qt::SolidLine,Qt::RoundCap,Qt::RoundJoin));painter->setBrush( QColor( 192,253,123));
 painter->drawRoundRect(snake.x[snake.node-1],snake.y[snake.node-1],
10,10,50,50);/*去除蛇的的最后一節(jié)*/
 
    

}

void SnakeGame::keyPressEvent(QKeyEvent *k)
{
key= k->key();
if(key==ESC){SnakeTime->stop();InitGame();}
if(key==PAUSE)
	{
       if(SnakeTime->isActive())
		{//SnakeTime->stop();
	   pause=0;}
	   else
		   {
		   SnakeTime->start(gamespeed,false);
		   pause=1;
           }
	 }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产a| 在线观看不卡一区| 老司机免费视频一区二区三区| 亚洲综合成人在线| 亚洲一区二区在线播放相泽| 亚洲美腿欧美偷拍| 亚洲日本青草视频在线怡红院| 自拍偷拍国产精品| 亚洲一区成人在线| 青青草原综合久久大伊人精品 | 日韩毛片在线免费观看| 国产欧美日韩视频在线观看| 欧美国产欧美综合| 中文字幕一区在线观看| 亚洲黄色免费网站| 久久国产精品区| 豆国产96在线|亚洲| 色综合色狠狠天天综合色| 91电影在线观看| 欧美一区二区三区免费视频| 日韩一区二区影院| 国产精品网站在线观看| 亚洲国产视频在线| 精品一区二区三区在线播放视频| 国产激情偷乱视频一区二区三区| 成人av在线网| 3d动漫精品啪啪| 日本一区二区三级电影在线观看| 亚洲日本丝袜连裤袜办公室| 强制捆绑调教一区二区| 国产91综合一区在线观看| 在线免费观看日本一区| 精品国产成人在线影院| 一级特黄大欧美久久久| 韩国成人精品a∨在线观看| a4yy欧美一区二区三区| 日韩免费观看高清完整版| 国产精品久久看| 久久99在线观看| 欧美亚洲日本一区| 国产亚洲精品中文字幕| 午夜婷婷国产麻豆精品| 床上的激情91.| 日韩三级视频在线看| 亚洲精品国产视频| 国内精品久久久久影院薰衣草 | 亚洲韩国精品一区| 国产成人免费网站| 91精品国产综合久久久久久久久久 | 中文字幕在线播放不卡一区| 久久精品国产澳门| 欧美人与性动xxxx| 亚洲欧美电影一区二区| 国产激情一区二区三区桃花岛亚洲| 欧美人成免费网站| 亚洲精品视频免费观看| 不卡一二三区首页| 国产欧美一区二区三区在线老狼| 五月天视频一区| 91在线视频免费91| 中文字幕的久久| 国产精品538一区二区在线| 欧美一级电影网站| 日本亚洲天堂网| 欧美日韩免费一区二区三区| 亚洲精品视频免费观看| 91在线视频免费观看| 国产精品成人免费精品自在线观看| 九九九精品视频| 精品国产99国产精品| 紧缚奴在线一区二区三区| 欧美一区二区三区性视频| 日日欢夜夜爽一区| 欧美人伦禁忌dvd放荡欲情| 性做久久久久久免费观看 | 奇米影视在线99精品| 91精品国产手机| 亚洲成在人线免费| 777久久久精品| 美女高潮久久久| ww久久中文字幕| 国产99久久久国产精品潘金网站| 久久久久久久久99精品| 懂色av噜噜一区二区三区av| 国产精品久久二区二区| 91麻豆精品一区二区三区| 一区二区三区美女| 91精品在线一区二区| 色婷婷狠狠综合| 亚洲欧美另类小说| 一本一本久久a久久精品综合麻豆| 亚洲天堂成人网| 欧美乱妇15p| 极品少妇xxxx精品少妇偷拍 | 3d动漫精品啪啪1区2区免费| 日韩精品每日更新| 国产亚洲欧美在线| av电影在线观看一区| 亚洲va天堂va国产va久| 欧美一级日韩一级| 不卡一区中文字幕| 婷婷夜色潮精品综合在线| 精品国产区一区| 97精品超碰一区二区三区| 日韩激情在线观看| 中文在线一区二区| 欧美高清视频不卡网| 国产一区欧美二区| 一级中文字幕一区二区| 精品处破学生在线二十三| 91蝌蚪porny九色| 精品一区二区三区欧美| 中文字幕中文乱码欧美一区二区| 欧美色爱综合网| 国产成人av自拍| 五月激情六月综合| 亚洲欧洲日产国码二区| 日韩欧美一卡二卡| 欧美亚洲愉拍一区二区| 成人一区二区三区视频在线观看| 亚洲国产欧美在线| 国产精品色呦呦| 日韩一区二区免费高清| 色欧美日韩亚洲| 国产精品乡下勾搭老头1| 亚洲va韩国va欧美va精品| 国产精品久久久久三级| 日韩午夜小视频| 91久久人澡人人添人人爽欧美| 韩国av一区二区三区四区| 午夜国产精品影院在线观看| 欧美国产精品一区| 久久久影院官网| 日韩一级大片在线| 欧美乱妇15p| 欧美色涩在线第一页| 成人高清视频在线| 韩国女主播一区| 另类调教123区| 日韩国产在线一| 亚洲3atv精品一区二区三区| 综合激情成人伊人| 成人免费在线观看入口| 国产欧美一区二区在线| 久久免费电影网| 26uuu久久天堂性欧美| 日韩一区二区免费在线电影| 欧美欧美午夜aⅴ在线观看| 91行情网站电视在线观看高清版| a4yy欧美一区二区三区| heyzo一本久久综合| 成人h精品动漫一区二区三区| 国产精品亚洲一区二区三区妖精| 国产美女视频一区| 国产麻豆视频一区| 国产精品资源网| 国产福利91精品| 国产精品一区二区久久不卡 | 欧美午夜精品免费| 日本国产一区二区| 欧美午夜在线一二页| 欧美蜜桃一区二区三区| 在线播放国产精品二区一二区四区| 91国产精品成人| 欧美日韩高清在线播放| 日韩视频一区二区三区| 久久婷婷综合激情| 成人欧美一区二区三区视频网页| 综合久久久久综合| 亚洲成人精品影院| 国产美女一区二区| 色综合天天综合网天天狠天天| 日本道免费精品一区二区三区| 欧美日韩高清不卡| 久久―日本道色综合久久 | 欧美中文字幕亚洲一区二区va在线| 欧美性猛交一区二区三区精品 | 国产一区二区日韩精品| 成人精品视频.| 在线不卡中文字幕| 久久久久国产一区二区三区四区 | 国产精品一区二区你懂的| 99re热这里只有精品视频| 欧美视频一区二区三区| 欧美精品一区男女天堂| 亚洲精品国产精品乱码不99| 老司机一区二区| 日本乱人伦一区| 久久久一区二区| 亚洲自拍偷拍图区| 国产乱码精品一区二区三区av| 91麻豆成人久久精品二区三区| 欧美一区二区三区视频在线| 国产精品久久久久久久久动漫 | 亚洲欧洲综合另类在线| 另类小说综合欧美亚洲| 日本乱人伦aⅴ精品| 欧美激情一区三区| 久久精品噜噜噜成人88aⅴ| 欧洲生活片亚洲生活在线观看|