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

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

?? snake.c

?? brew應用-貪吃蛇原碼
?? C
字號:
/*===========================================================================

FILE: snake.c
===========================================================================*/
/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "AEEModGen.h"          // Module interface definitions
#include "AEEAppGen.h"          // Applet interface definitions
#include "AEEShell.h"           // Shell interface definitions
#include "snake.bid"
#include "AEEStdLib.h" 
//add service
#include "AEEFile.h"          // AEE File Manager Services

/* definition */

/*-------------------------------------------------------------------
Function Prototypes
-------------------------------------------------------------------*/
static boolean snake_HandleEvent(IApplet * pi, AEEEvent eCode, 
                                      uint16 wParam, uint32 dwParam);
static boolean Snake_InitAppData(IApplet * pi);

/*===============================================================================
FUNCTION DEFINITIONS
=============================================================================== */
/*----------------------snake game---------------------------*/
typedef struct {
   int x;
   int y;
   }SNAKE;
typedef enum{
UP=0,
LEFT,
RIGHT,
DOWN
}SNAKE_DIRECTION;
typedef struct _CSnakeApp
{
AEEApplet a; // Mandatory data member
int AreaWidth; // Stores the area width
int AreaHeight; // Stores the area height
int gameover;//indicate whether game over
int food_x;//the x cordinate for food
int food_y;//the y cordinate for food
SNAKE_DIRECTION current_snake_direction;
int snake_length;
int score;
SNAKE snake[200];
}CSnakeApp;

#define LEFT_LIMIT      1
#define UP_LIMIT        1

#define SNAKE_HEAD_X LEFT_LIMIT+7
#define SNAKE_HEAD_Y UP_LIMIT+7

#define BLOCK_SIZE 6 //less than or equal to 6
/*translate an integer into decimal sting*/
unsigned int up_Itoa(AECHAR * buffer, int eger)
{
	int len, ueger;
	unsigned char minusP;

	minusP = (eger < 0);

	if(minusP)
	{
		if(buffer) 
		{
			*(buffer++) = '-';
		}
		ueger = (int)(0 - eger);
	}
	else
	{
		ueger = (unsigned int)eger;
	}

	{
		unsigned int tmp;

		tmp = ueger;
		len = 1;
		while ( (tmp /= 10) ) len += 1;
	}

	{
		unsigned int pt;

		pt = len;
		if (buffer) buffer[pt] = 0;

		while(pt--) 
		{
			if (buffer)
			{
				buffer[pt] = (char)('0' + (ueger % 10));
			}
			ueger /= 10;
		}
	}
	return (len + 1 + minusP);
}
//====================================================================
// Function: write_video
// Description: draw a frame
// input value position(x,y)
//====================================================================
void write_video
(
      CSnakeApp * pMe, 
      int x,
      int y,
      RGBVAL color,
      unsigned char full
 )
{
     AEERect rect;
     rect.x=x;
     rect.y=y;
     rect.dx=BLOCK_SIZE;
     rect.dy=BLOCK_SIZE;
     if(full)
 	    IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
                           &rect,
                           RGB_BLACK,// RGBVAL 
                           color,// RGBVAL 
                           IDF_RECT_FRAME | IDF_RECT_FILL);
     	
 	 else
 	 	IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
                           &rect,
                           RGB_WHITE,// RGBVAL 
                           RGB_WHITE,// RGBVAL 
                           IDF_RECT_FRAME | IDF_RECT_FILL);
}
/**/
void init_frame(CSnakeApp * pMe)
{
  AEERect rect;
  rect.x=LEFT_LIMIT*BLOCK_SIZE-1;
     rect.y=UP_LIMIT*BLOCK_SIZE-1;
     rect.dx=(pMe->AreaWidth-LEFT_LIMIT+1)*BLOCK_SIZE+2;
     rect.dy=(pMe->AreaHeight-UP_LIMIT+1)*BLOCK_SIZE+2;
 	 IDISPLAY_DrawRect(pMe->a.m_pIDisplay,
                           &rect,
                           MAKE_RGB(0,0,255),// RGBVAL 
                           MAKE_RGB(0,0,255),// RGBVAL 
                           IDF_RECT_FRAME );//| IDF_RECT_FILL);
}
void init_snake(CSnakeApp * pMe)
{int i;

 pMe->snake_length=7;
 pMe->current_snake_direction=RIGHT;
 for(i=0;i<pMe->snake_length;i++)
 {pMe->snake[i].x=SNAKE_HEAD_X-i;
 pMe->snake[i].y=SNAKE_HEAD_Y;
 }
 for(i=pMe->snake_length-1;i>=0;i--)
 write_video(pMe,pMe->snake[i].x*BLOCK_SIZE,pMe->snake[i].y*BLOCK_SIZE,MAKE_RGB(128,128,128),TRUE);
 
}

void generate_food(CSnakeApp *pMe)
{
 int i;
 int found=FALSE;
 while(!found)
 {
  pMe->food_x=(int)GET_UPTIMEMS();;
  pMe->food_x=(pMe->food_x%(pMe->AreaWidth-LEFT_LIMIT-2)+pMe->snake[0].x+pMe->snake[2].y)%(pMe->AreaWidth-LEFT_LIMIT-2);
  pMe->food_y=(int)GET_UPTIMEMS();;
  pMe->food_y=(pMe->food_y%(pMe->AreaHeight-UP_LIMIT-2)+pMe->snake[1].y+pMe->snake[3].x)%(pMe->AreaHeight-UP_LIMIT-2);
  pMe->food_x=pMe->food_x+LEFT_LIMIT+1;
  pMe->food_y=pMe->food_y+UP_LIMIT+1;
  for(i=0;i<pMe->snake_length;i++)
  {
  if(pMe->food_x==pMe->snake[i].x&&pMe->food_y==pMe->snake[i].y) break;
  }

  if(i>=pMe->snake_length) found=TRUE;

 }
  write_video(pMe,pMe->food_x*BLOCK_SIZE,pMe->food_y*BLOCK_SIZE,MAKE_RGB(255,0,0),TRUE);
 }
boolean isself(CSnakeApp *pMe)
{int i;

 for(i=1;i<pMe->snake_length;i++)
 if(pMe->snake[0].x==pMe->snake[i].x&&pMe->snake[0].y==pMe->snake[i].y) 
 break;
 
 if(i>=pMe->snake_length)
 	return FALSE;
 else 
 	return TRUE;
}

static void display_score(CSnakeApp *pMe)
{

 AECHAR game_score[15]={'s','c','o','r','e',':',0,0,0,0,0,0,0,0,0};
 up_Itoa(game_score+6,(int)pMe->score);
	   IDISPLAY_DrawText(pMe->a.m_pIDisplay,    // Display instance
	                           AEE_FONT_BOLD,       // Use BOLD font
	                           game_score,              // Text - Normally comes from resource
	                           -1,                  // -1 = Use full string length
	                           0,   // x-cordinate
	                           (pMe->AreaHeight+UP_LIMIT)*BLOCK_SIZE+1, // y-cordinate
	                           NULL,                // No clipping
	                           IDF_ALIGN_CENTER);// | IDF_ALIGN_MIDDLE);
 
}

static void update_map(CSnakeApp *pMe)
{
	int j;
	for(j=0;j<pMe->snake_length;j++)
	write_video(pMe,pMe->snake[j].x*BLOCK_SIZE,pMe->snake[j].y*BLOCK_SIZE,MAKE_RGB(128,128,128),FALSE);
	for(j=pMe->snake_length-1;j>0;j--)
	{
		pMe->snake[j].x=pMe->snake[j-1].x;
		pMe->snake[j].y=pMe->snake[j-1].y;
	}
              switch(pMe->current_snake_direction)
                   {
                   	case UP:
		              pMe->snake[0].y--;
		              if(pMe->snake[0].y<UP_LIMIT)
		              pMe->snake[0].y=pMe->AreaHeight;
	              break;
                    case DOWN:
		              pMe->snake[0].y++;
		              if(pMe->snake[0].y>pMe->AreaHeight)
		              pMe->snake[0].y=UP_LIMIT;
	              break;
                    case LEFT:
		              pMe->snake[0].x--;
		              if(pMe->snake[0].x<LEFT_LIMIT)
		              pMe->snake[0].x=pMe->AreaWidth;
	              break;
                    case RIGHT:
		              pMe->snake[0].x++;
		              if(pMe->snake[0].x>pMe->AreaWidth)
		              pMe->snake[0].x=LEFT_LIMIT;
	              break;
                   }

		     for(j=pMe->snake_length-1;j>=0;j--)
		     write_video(pMe,pMe->snake[j].x*BLOCK_SIZE,pMe->snake[j].y*BLOCK_SIZE,MAKE_RGB(128,128,128),TRUE);
		     
		     if(pMe->snake[0].x==pMe->food_x&&pMe->snake[0].y==pMe->food_y)
		     {generate_food(pMe);
		      pMe->snake_length++;
		      pMe->score+=8;
		      display_score(pMe);
		     }
		    
		      if(isself(pMe))
		      pMe->gameover=TRUE;
		      if(!pMe->gameover)
		      ISHELL_SetTimer(pMe->a.m_pIShell, 100, (PFNNOTIFY) update_map, (AEEApplet *) pMe);
		      else{
		      
		      	}
			  IDISPLAY_Update (pMe->a.m_pIDisplay);
}
/*===========================================================================

FUNCTION: AEEClsCreateInstance

DESCRIPTION
	This function is invoked while the app is being loaded. All Modules must provide this 
	function. Ensure to retain the same name and parameters for this function.
	In here, the module must verify the ClassID and then invoke the AEEApplet_New() function
	that has been provided in AEEAppGen.c. 

   After invoking AEEApplet_New(), this function can do app specific initialization. In this
   example, a generic structure is provided so that app developers need not change app specific
   initialization section every time except for a call to IDisplay_InitAppData(). 
   This is done as follows: InitAppData() is called to initialize AppletData 
   instance. It is app developers responsibility to fill-in app data initialization 
   code of InitAppData(). App developer is also responsible to release memory 
   allocated for data contained in AppletData -- this can be done in 
   IDisplay_FreeAppData().

PROTOTYPE:
   int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)

PARAMETERS:
	clsID: [in]: Specifies the ClassID of the applet which is being loaded

	pIShell: [in]: Contains pointer to the IShell object. 

	pIModule: pin]: Contains pointer to the IModule object to the current module to which
	this app belongs

	ppObj: [out]: On return, *ppObj must point to a valid IApplet structure. Allocation
	of memory for this structure and initializing the base data members is done by AEEApplet_New().

DEPENDENCIES
  none

RETURN VALUE
  AEE_SUCCESS: If the app needs to be loaded and if AEEApplet_New() invocation was
     successful
  EFAILED: If the app does not need to be loaded or if errors occurred in 
     AEEApplet_New(). If this function returns FALSE, the app will not be loaded.

SIDE EFFECTS
  none
===========================================================================*/
int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
{
   *ppObj = NULL;
		
   if(ClsId == AEECLSID_SNAKE){
      if(AEEApplet_New(sizeof(CSnakeApp), ClsId, pIShell,po,(IApplet**)ppObj,
         (AEEHANDLER)snake_HandleEvent,NULL)
         == TRUE)
      {
		 // Add your code here .....
         if(Snake_InitAppData((IApplet * ) * ppObj) == TRUE)
         return (AEE_SUCCESS);
      }
   }
	return (EFAILED);
}

/*===========================================================================

FUNCTION snake_HandleEvent

DESCRIPTION
	This is the EventHandler for this app. All events to this app are handled in this
	function. All APPs must supply an Event Handler.

PROTOTYPE:
	boolean snake_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)

PARAMETERS:
	pi: Pointer to the AEEApplet structure. This structure contains information specific
	to this applet. It was initialized during the AEEClsCreateInstance() function.

	ecode: Specifies the Event sent to this applet

   wParam, dwParam: Event specific data.

DEPENDENCIES
  none

RETURN VALUE
  TRUE: If the app has processed the event
  FALSE: If the app did not process the event

SIDE EFFECTS
  none
===========================================================================*/
static boolean snake_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{ 
   int timer=100;
   CSnakeApp *pMe=(CSnakeApp *)pi;
   
   switch (eCode) 
	{
      case EVT_APP_START:                        	   
	
		init_frame(pMe); 
		timer=100;
		init_snake(pMe);
		generate_food(pMe);        
		IDISPLAY_Update (pMe->a.m_pIDisplay);
		ISHELL_SetTimer(pMe->a.m_pIShell, timer, (PFNNOTIFY) update_map, (AEEApplet *) pMe);
		return(TRUE);
		
      case EVT_APP_STOP:

		    // Add your code here .....

         return TRUE;
	//case 
	case EVT_KEY:
		switch (wParam)
         {
			case AVK_CLR:
		       ISHELL_CancelTimer(pMe->a.m_pIShell, (PFNNOTIFY) update_map, (AEEApplet *) pMe);
               	return(FALSE);
				
			case AVK_UP:
				 if(pMe->current_snake_direction!=DOWN)
         			{
	         		      pMe->current_snake_direction=UP;
         			}
         		break;
			case AVK_DOWN:
	 			if(pMe->current_snake_direction!=UP)
	                	{
	         		      pMe->current_snake_direction=DOWN;
	                	}

         		break;
			case AVK_LEFT:
				 if(pMe->current_snake_direction!=RIGHT)
                   		 { 
         		      		pMe->current_snake_direction=LEFT;
                	 	}
         		break;
			case AVK_RIGHT:
				if(pMe->current_snake_direction!=LEFT)
         			 {
                      		pMe->current_snake_direction=RIGHT;        			
         			 }
         		break;
			
			}

         	IDISPLAY_Update (pMe->a.m_pIDisplay);
		 return(TRUE);
      default:
         break;
   }
   return FALSE;
}
/*initialize applet-specific data.*/
static boolean Snake_InitAppData(IApplet * pi)
{
	AEEDeviceInfo di;

	 CSnakeApp *pMe=(CSnakeApp *)pi;

	ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&di);
    pMe->AreaWidth=(di.cxScreen-LEFT_LIMIT)/BLOCK_SIZE-1;
	pMe->AreaHeight=(di.cyScreen-UP_LIMIT)/BLOCK_SIZE-2;
	pMe->gameover=FALSE;

	return TRUE;
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性极品少妇| 国产裸体歌舞团一区二区| 中文字幕在线一区| 国产精品久久免费看| 国产欧美精品一区二区色综合朱莉 | 欧美精品一区视频| 色综合天天综合网国产成人综合天 | 日本久久一区二区三区| 91片黄在线观看| 成人黄色大片在线观看| av亚洲精华国产精华精| 成人av在线一区二区三区| 色丁香久综合在线久综合在线观看| 在线亚洲免费视频| 欧美一级午夜免费电影| 中文字幕精品一区二区三区精品| 中文在线资源观看网站视频免费不卡| 精品成人在线观看| 精品第一国产综合精品aⅴ| www激情久久| 亚洲最大成人网4388xx| 蜜乳av一区二区| 国产suv精品一区二区6| 欧美精品成人一区二区三区四区| 久久精品免费在线观看| 中文字幕一区在线观看| 麻豆91免费观看| 日韩欧美美女一区二区三区| 亚洲欧洲日本在线| 亚洲电影中文字幕在线观看| 香蕉乱码成人久久天堂爱免费| 成人一区二区三区视频在线观看 | 91丝袜美女网| 久久久久久麻豆| 久久福利视频一区二区| 欧美日韩日日夜夜| 亚洲成人免费看| av午夜一区麻豆| 欧美精品日日鲁夜夜添| 一区二区三区中文字幕电影 | 国产成人综合视频| 26uuu精品一区二区在线观看| 一区二区三区色| 97久久久精品综合88久久| 中文字幕av一区二区三区高| 激情六月婷婷综合| 久久中文娱乐网| 国产精品一卡二卡在线观看| 26uuu久久天堂性欧美| 美女国产一区二区三区| 制服丝袜中文字幕一区| 亚洲特级片在线| 欧美体内she精高潮| 五月激情综合色| 欧美精品九九99久久| 亚洲成av人片观看| 日韩精品在线网站| 国内精品写真在线观看| 国产欧美日韩激情| 色综合久久综合网| 黄页视频在线91| 1024精品合集| 精品美女一区二区三区| 成人a免费在线看| 日韩国产高清在线| 国产日韩av一区二区| 在线国产电影不卡| 久久电影网站中文字幕| 亚洲女人****多毛耸耸8| 欧美大度的电影原声| 99re视频精品| 久久精品国产亚洲aⅴ | 丰满亚洲少妇av| 精品在线观看免费| 亚洲成人免费av| 亚洲欧洲制服丝袜| 国产欧美日韩不卡免费| 亚洲三级电影网站| 亚洲欧洲综合另类在线| 亚洲天堂久久久久久久| 国产精品成人免费| 国产日韩精品一区二区三区在线| 久久久午夜电影| 国产视频视频一区| 国产精品美女久久久久久久久 | 婷婷夜色潮精品综合在线| 最新日韩在线视频| 中文字幕日韩一区二区| 一区二区三区在线视频播放 | aaa亚洲精品| 精品国产三级电影在线观看| 激情小说欧美图片| 亚洲aaa精品| 五月天欧美精品| 欧美日韩综合在线免费观看| 成人av免费网站| 日韩专区一卡二卡| 成人短视频下载| 成人av一区二区三区| av一二三不卡影片| 亚洲免费观看高清在线观看| 欧美久久久久免费| 欧美精品tushy高清| 成人免费在线观看入口| 亚洲一线二线三线久久久| 国精产品一区一区三区mba桃花| 亚洲自拍偷拍欧美| 国产原创一区二区三区| 国产98色在线|日韩| 成人性视频免费网站| 欧美日韩激情一区二区三区| 日韩精品中文字幕一区二区三区| 国产精品护士白丝一区av| 亚洲最新视频在线观看| 亚洲午夜日本在线观看| 色综合久久六月婷婷中文字幕| 亚洲第一福利一区| 色94色欧美sute亚洲线路一久| 国产精品污网站| 丁香婷婷综合五月| 9191精品国产综合久久久久久| 久久久欧美精品sm网站| 一区二区三区欧美久久| 国产精品影音先锋| 欧美影视一区二区三区| 1区2区3区精品视频| 99视频精品在线| 99久久国产综合精品麻豆| 欧美日韩国产在线播放网站| 欧美日韩免费高清一区色橹橹| 精品国产成人在线影院 | 国产视频亚洲色图| 七七婷婷婷婷精品国产| 精品国产污网站| 91精品国产综合久久国产大片| 极品少妇一区二区| 欧美日韩成人一区| 亚洲va欧美va国产va天堂影院| 亚洲欧美日韩一区二区| 综合电影一区二区三区| 69堂国产成人免费视频| 91精品国产全国免费观看| 久久精品一区二区三区不卡| 性久久久久久久久| 91精品国产综合久久小美女| 国产精品二区一区二区aⅴ污介绍| 555夜色666亚洲国产免| 欧美精品一级二级| 欧美伦理电影网| 免费三级欧美电影| 欧美私模裸体表演在线观看| 中文字幕乱码一区二区免费| 欧美无砖专区一中文字| 亚洲乱码精品一二三四区日韩在线 | 国产麻豆视频一区| 国产精品私人影院| 7777精品伊人久久久大香线蕉| 国产电影一区二区三区| 91福利在线免费观看| 欧美一区二区三区影视| 亚洲免费毛片网站| 欧美色精品天天在线观看视频| 精品日韩欧美在线| 亚洲妇女屁股眼交7| 欧美视频一区二区在线观看| 成人的网站免费观看| 麻豆精品久久精品色综合| 国产欧美一区二区在线观看| 久久婷婷久久一区二区三区| 久久久久久久久久久黄色| 538prom精品视频线放| 欧美日韩精品一区二区三区四区| 91日韩在线专区| 亚洲激情图片一区| 中文字幕一区二区在线播放| 亚洲女同一区二区| 午夜成人免费电影| 亚洲一区二区三区小说| 国产精品国产三级国产aⅴ中文| 亚洲欧美一区二区不卡| 26uuu国产电影一区二区| 26uuuu精品一区二区| 伊人婷婷欧美激情| 99国产精品99久久久久久| 蜜桃视频在线一区| 免费成人美女在线观看.| 国产综合色产在线精品| 毛片av一区二区三区| 久久久久99精品国产片| 欧美久久久久中文字幕| 精品国产百合女同互慰| 欧美日韩高清一区二区| 国产精品初高中害羞小美女文| 亚洲欧洲精品一区二区三区不卡| 中文字幕免费不卡| 在线观看视频91| 国产一区二区伦理片| 99精品视频在线观看| 在线日韩一区二区| 三级精品在线观看|