本源代碼是基于STM32F4XX硬件平臺設計的貪吃蛇小游戲,主要難點在:隨機點產生、貪吃蛇轉向、貪吃蛇貪吃點;本部分主要接收產生隨機點,產生隨機點需要注意兩個方面:1、隨機點在有效的范圍內;2、貪吃點與貪吃蛇不重合。產生隨機點主要有兩個函數,分別如下://隨機數產生任務void rng_chansheng(void *p_arg){OS_ERR err;while(1){OSSemPend(&RNG_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);zou.x = RNG_Get_RandomRange(0,50)*8 + 40;zou.y = RNG_Get_RandomRange(0,50)*8 + 260;lcd_fangkuan(zou.x,zou.y,zou.x+SHE_FAANGKUAN_SIZE,zou.y+SHE_FAANGKUAN_SIZE);OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); //延時500ms}}//往下方向畫一個實心的正方形,代表貪食蛇的一段void lcd_fangkuan(u16 x1,u16 y1,u16 x2 ,u16 y2){u16 i,j;u16 xx,yy;if(((x2 - x1) != SHE_FAANGKUAN_SIZE)||((y2 - y1) != SHE_FAANGKUAN_SIZE))return ;if(x1 > x2) {xx = x1;x1 = x2;x2 = xx;}if(y1 > y2){yy = y1;y1 = y2;y2 = yy;}if((y1 < 260)|| (y2 > 660)||(x1 < 40)||(x2 > 448)){game_yun_error = 1;LCD_ShowString(150,300,500,24,24,"GAME OVER!!");return ;}for(i=x1; i<x2; i++){for(j=y1; j<y2; j++){LCD_DrawPoint(i,j);}}}
標簽:
stm32
ucosiii
貪吃蛇游戲
上傳時間:
2022-08-10
上傳用戶: