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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? snake.c

?? 單片機實現(xiàn)貪吃蛇游戲,需要一個1664的點陣led,游戲可設(shè)等級
?? C
字號:
#include "w77e58.h"
#include "vt100.h"
#include "init.h"
#include "stdio.h"
#include "stdlib.h"

typedef struct kk{
	unsigned char x;
	unsigned char y;
}SnakeType;

xdata struct kk snake[400];


#define UP	0xf0
#define DOWN	0x0f
//-----------------------------------------------------------------------------------
#define LEFT	0x00
#define RIGHT	0xff

#define L_SHEET (2*2 +1)
#define R_SHEET (13*2+1)

#define T_SHEET 5
#define B_SHEET 16
//-----------------------------------------------------------------------------------
void	init(void);
void	delay(unsigned int);
void	put_block(char,char);
void	hide_block(char,char);
bit	flash_snake(unsigned char);
void	putch(char);
bit	kbhit(void);
char	getch(void);
void	clr_wchdog(void){}
void	put_bug(void);
void	init_snake(void);
void	putstr(char xdata *);
void	flash_data(void);
void	type_kbd(char code*);
//-----------------------------------------------------------------------------------
data	char GameScore;
data	char HighScore;
data	char direct;
data	char SnakeLen;

xdata	char print_buf[20];

xdata	int Level;
xdata	int	bug_x,bug_y;

bit	TimerEnd;
bit	GameOver;
bit	GameStart;
bit	blink_flag0;
bit	blink_flag1;
bit	flashed;
bit	type_flag;

//-----------------------------------------------------------------------------------
void	main()
{
	data int ch,ch1;
	bit	scoreadd;

	init();
	put_bug();
	while(1)
	{
		REN_1=1;
		if(kbhit())
 		{
  			ch1=ch;
  			ch=getch();
    			ch=ch&(0x20^0xff);
    			switch(ch)
      			{
      	 		case	'W':
      	 	        	ch=UP;
	      	          	if(~ch == ch1) ch=ch1;
      	          		else {TimerEnd=1;scoreadd=1;}
				break;
      	 		case	'S':
      	 	        	ch=DOWN;
	      	          	if(~ch == ch1) ch=ch1;
      	          		else {TimerEnd=1;scoreadd=1;}
				break;
      	 		case	'A':
      	          	        ch=LEFT;
	      	          	if(~ch == ch1) ch=ch1;
      	          		else {TimerEnd=1;scoreadd=1;}
				break;
      	 		case	'D':
      	          	        ch=RIGHT;
	      	          	if(~ch == ch1) ch=ch1;
      	          		else {TimerEnd=1;scoreadd=1;}
				break;
      	 		case	'\r':
      	          	        if(GameOver)
      	                        {
	      	 	        	init_snake();
       	   			GameOver=0;
           	                        GameScore=0;
                                       //GameStart=0;
				}
   				if(!GameStart)
      				{
      	 		        	del_line(4);
      	 	                        gotoxy(L_SHEET,4);
      	 	                        fputstr("Playing game....");
      	                         	del_line(24);
      	                         	gotoxy(L_SHEET,24);
					fputstr("Option| UP(&W) DOWN(&S) LEFT(&A) RIGHT(D) &PAUSE");
				}
				GameStart=1;ch=1;
                               break;
			case	'P':
  				if(!GameStart) break;
  				while(!kbhit())
     				{
	      	 	                gotoxy(L_SHEET,4);
	      	 	                type_kbd("Game pause, any key to continue...");
					del_line(4);
    				}
      				gotoxy(L_SHEET,4);
				fputstr("Playing game....");
   				break;
			case	'N':
  				if(!GameStart && Level>0)	Level--;
     				flash_data();
				ch=1;
   				break;
			case	'U':
  				if(!GameStart && Level<16)	Level++;
     				flash_data();
			default:
  				ch=1;
			}
  		}
		if(!GameStart)
 		{
  			del_line(4);
	  		gotoxy(L_SHEET,4);
  			if(GameOver) type_kbd("Game Over,");
    			type_kbd("Press Enter to start    ");
  		}
 		if(!GameOver && GameStart)
  		{
	 		if(blink_flag0)
  			{
				hide_block(bug_x,bug_y);
  				blink_flag0=0;
	  		}
  			if(blink_flag1)
  			{
				put_block(bug_x,bug_y);
	  			blink_flag1=0;
  			}
   		}
		
		if( TimerEnd && GameStart && !GameOver)
 		{
  			TimerEnd=0;
    			if(scoreadd)
    			{
     				scoreadd=0;
	     			GameScore += (20+Level*2);
     			}
    			if(!flash_snake(ch))                            
      			{
				if(GameScore>HighScore) HighScore=GameScore;
   				GameScore=0;
      	 		        GameOver=1;
      	 	                GameStart=0;
      	                  	hide_block(bug_x,bug_y);
      	                  	del_line(24);
				gotoxy(L_SHEET,24);
				fputstr("Option| Level &UP/DOW&N");
			}
			flash_data();
  		}
	}
}
//-----------------------------------------------------------------------------------
void	time_int(void) interrupt 1
{
	static	int tcc;
	
	TH0=0x80;
	if((tcc&0x03)==0) blink_flag0=1;
	if((tcc&0x03)==2) blink_flag1=1;
	
	if( ++tcc >= (16-Level+4) )
	{	
		tcc=0;
 		TimerEnd=!flashed;
		flashed=0;
  	}
	if(type_flag ) TimerEnd=1;
}
//-----------------------------------------------------------------------------------
void	init(void)
{
	char i;
	char xdata*xptr;
	
       EA=0;
       use_inter_SRAM;
	xptr=(char xdata*)0x400;
	while(xptr) *xptr--=0;
	timer0_16bit;
	timer0_start;
	ET0=1;
	serial_uart8;
	REN_1=1;
	serial_baud_9600;
	TI_1=1;
	Level=8;
	fputstr("#");
	clrscr();
	for(i=L_SHEET;i<=R_SHEET;i+=2)
	{
 		put_block(i,T_SHEET);
 		put_block(i,B_SHEET);
	}
	for(i=T_SHEET+1;i<B_SHEET;i++)
	{
 		put_block(L_SHEET,i);
 		put_block(R_SHEET,i);
	}
	fputstr("$");
	gotoxy(L_SHEET,1);fputstr("#Cupidity snake version 1.00                               $");
	gotoxy(L_SHEET,2);fputstr("High Score:");
	gotoxy(L_SHEET,3);fputstr("Score     :");
	gotoxy(L_SHEET+30,2);fputstr("Tuched:");
	gotoxy(L_SHEET+30,3);fputstr("Level :");
	gotoxy(L_SHEET,24);
	fputstr("Option| Level &UP/DOW&N");
    snake[0].x=0;
	init_snake();
	flash_data();
	GameStart=0;
	GameOver=0;
	EA=1;
}
//-----------------------------------------------------------------------------------
void	init_snake(void)
{
	unsigned char i;
	
       i=0;
	while(snake[i].x!=0)
	{
    		hide_block(snake[i].x,snake[i].y);
      	        i++;
	}
	for(i=0;i<7;i++)
	{
		snake[i].x=L_SHEET+20;
 		snake[i].y=T_SHEET+4+i;
 	}
	snake[7].x=0;
	direct=LEFT;
	for(i=0;snake[i].x!=0;i++)
		put_block(snake[i].x,snake[i].y);
 	SnakeLen=7;
 	

}
//-----------------------------------------------------------------------------------
void	put_bug(void)
{
	data int i,ch;
re_find:
	do{
		ch =rand()%76;
       }while((ch<=L_SHEET || ch>=R_SHEET)|| 0==(ch&0x01));
       bug_x=ch;
       do{
		ch =rand()%24;
       }while(ch<=T_SHEET || ch>=B_SHEET);
	for(i=0;snake[i].x!=0;i++)
	{
		if(ch==snake[i].y && bug_x==snake[i].x)
 			goto re_find;
	}
       bug_y=ch;
       put_block(bug_x,bug_y);
}
//-----------------------------------------------------------------------------------
bit	flash_snake(unsigned char dir1)
{
	data	unsigned char x0,y0,i,j;


	if(dir1==1) dir1=direct;
	else
	{
		if(direct == ~dir1)	dir1=direct;
 		else	direct=dir1;
 		
	}
	switch(dir1)
	{
	case UP:
		y0=snake[0].y-1;
 		x0=snake[0].x;
		break;
	case DOWN:
		y0=snake[0].y+1;
 		x0=snake[0].x;
		break;
	case LEFT:
		x0=snake[0].x-2;
 		y0=snake[0].y;
		break;
	case RIGHT:
		x0=snake[0].x+2;
 		y0=snake[0].y;
		break;
	}
      	if(	(y0<=T_SHEET)|| (y0>=B_SHEET)||	(x0<=L_SHEET)||(x0>=R_SHEET))return(0);
      		
	for(i=0;snake[i].x!=0;i++)
	{
		if(x0==snake[i].x && y0==snake[i].y) return(0);
 	}
 	hide_block(x0,y0);
 	put_block(x0,y0);
	hide_block(snake[i-1].x,snake[i-1].y);
 	if(bug_x==x0 && bug_y==y0)
 	{
 		SnakeLen++;
  		GameScore +=(SnakeLen*5 + Level*3);
		if((SnakeLen%15)==0 && Level<16) Level++;
 		snake[i].x=snake[i-1].x;
 		snake[i].y=snake[i-1].y;
  		snake[i+1].x=0;
    		i++;
    		
		for(j=0;snake[j].x!=0;j++)
 		{
  			hide_block(snake[j].x,snake[j].y);
      			put_block(snake[j].x,snake[j].y);
      	 		delay(0x200);
  		}
   		put_bug();
  	}

	while(--i)	snake[i]=snake[i-1];
	snake[0].x=x0;
	snake[0].y=y0;
	flashed=1;
	return(1);
}
//-----------------------------------------------------------------------------------
void	put_block(char x,char y)
{
	gotoxy(x,y);
	fputstr("▓");
	delay(100);
}
//-----------------------------------------------------------------------------------
void	hide_block(char x,char y)
{
	gotoxy(x,y);
	fputstr("  ");
}
//-----------------------------------------------------------------------------------
bit	kbhit(void)
{
	return(RI_1);
}
//-----------------------------------------------------------------------------------
void	putstr(char xdata*str)
{
	while(*str)
	{
		putch(*str++);
	}
}
//-----------------------------------------------------------------------------------
void	flash_data(void)
{
	gotoxy(L_SHEET+sizeof("High Score: "),2);
	sprintf(print_buf,"%-10ld",HighScore);putstr(print_buf);
	gotoxy(L_SHEET+sizeof("High Score: "),3);
	sprintf(print_buf,"%-10ld",GameScore);putstr(print_buf);
	gotoxy(L_SHEET+30+sizeof("Tuched: "),2);
	sprintf(print_buf,"%3d",SnakeLen);putstr(print_buf);
	gotoxy(L_SHEET+30+sizeof("Tuched: "),3);
	sprintf(print_buf,"%3d",(int)(char)Level);putstr(print_buf);

}
//-----------------------------------------------------------------------------------
void	type_kbd(char code *str)
{
	data int ch,i=0;
	
	type_flag=1;
	flashed=1;
	while( (ch=str[i]) !=0)
	{
		if(kbhit()) break;
		if(TimerEnd)
		{
 			TimerEnd=0;
  			putch(ch);
  			if(ch=='\n') fputstr("\r    ");
      			i++;
  		}
   		clr_wchdog();
	}
	type_flag=0;
}
//-----------------------------------------------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
北条麻妃一区二区三区| 蜜桃视频一区二区三区在线观看| 国产成人综合网站| 精品入口麻豆88视频| 韩国精品在线观看| 国产欧美一区二区精品性色| www..com久久爱| 亚洲天堂免费看| 欧美三级在线视频| 精品一区二区三区久久久| 欧美精品一区二区三区蜜桃| 成人精品国产免费网站| 亚洲一区视频在线观看视频| 制服丝袜亚洲色图| 国产成人在线观看| 一区二区在线看| 日韩免费观看高清完整版在线观看| 国产又粗又猛又爽又黄91精品| 国产精品成人在线观看| 欧美视频在线一区| 国产毛片精品视频| 亚洲国产精品自拍| 亚洲精品在线免费播放| 99久久精品国产精品久久| 亚洲第一成人在线| 国产日韩欧美精品电影三级在线| 色综合久久精品| 老司机精品视频导航| 日韩理论片网站| 欧美成人欧美edvon| 色综合久久久久久久久久久| 久久精工是国产品牌吗| 国产精品久久久爽爽爽麻豆色哟哟 | 国产麻豆视频一区二区| 亚洲免费资源在线播放| 精品理论电影在线观看| 色8久久人人97超碰香蕉987| 九九视频精品免费| 亚洲图片一区二区| 亚洲国产成人一区二区三区| 欧美一二三区在线| 91麻豆文化传媒在线观看| 精品午夜久久福利影院| 亚洲午夜激情网站| 国产精品大尺度| 精品国产乱码久久久久久久久| 在线观看欧美黄色| 成人丝袜视频网| 久久97超碰色| 日韩二区三区四区| 亚洲综合一二三区| 国产精品成人午夜| 国产日韩欧美激情| 久久久久久免费网| 欧美tickling网站挠脚心| 欧美日韩在线免费视频| 91丨九色丨黑人外教| 成人午夜看片网址| 国产福利精品一区| 国模一区二区三区白浆| 久久精品国产精品亚洲综合| 水野朝阳av一区二区三区| 一区二区三区精品视频| 国产精品乱人伦中文| 久久久国产精华| 26uuu国产在线精品一区二区| 欧美一区二区三区电影| 欧美日韩国产综合视频在线观看| 在线精品国精品国产尤物884a| 色综合久久中文字幕| 91麻豆高清视频| 91久久精品网| 欧美中文字幕久久| 日本电影亚洲天堂一区| 在线免费观看成人短视频| 在线观看一区二区视频| 在线免费观看视频一区| 欧美影片第一页| 欧美群妇大交群中文字幕| 3751色影院一区二区三区| 日韩一区二区在线观看视频播放| 欧美一区二区三区免费大片 | 91麻豆产精品久久久久久| 91视视频在线直接观看在线看网页在线看| 成人av先锋影音| 9人人澡人人爽人人精品| 色综合天天综合在线视频| 在线一区二区三区四区| 欧美性xxxxxx少妇| 欧美三级三级三级| 日韩久久久精品| 国产亚洲欧洲997久久综合 | 日韩欧美另类在线| 久久久久久久久久电影| 久久久蜜桃精品| 中文字幕亚洲一区二区av在线 | 不卡av免费在线观看| 色婷婷激情久久| 337p亚洲精品色噜噜| 久久久久久久久久电影| 亚洲欧美日韩国产另类专区| 一区二区三区不卡视频在线观看| 偷拍自拍另类欧美| 狠狠色丁香婷婷综合| av色综合久久天堂av综合| 91福利资源站| 精品国产乱码91久久久久久网站| 国产亲近乱来精品视频| 亚洲免费在线视频| 免费观看日韩电影| www.亚洲免费av| 欧美一区二区美女| 日本一区二区视频在线观看| 亚洲第一在线综合网站| 国产精品一区三区| 欧美综合视频在线观看| 日韩欧美国产系列| 亚洲欧美日韩久久精品| 男人的j进女人的j一区| av一区二区不卡| 精品成人一区二区三区| 一区二区三区美女| 国产美女视频一区| 欧美日韩大陆在线| 国产精品美女www爽爽爽| 日本美女视频一区二区| 97se亚洲国产综合自在线不卡| 日韩精品一区二区三区中文不卡| 亚洲欧美激情一区二区| 国产在线精品一区二区夜色 | 欧美色综合影院| 国产日韩视频一区二区三区| 丝袜国产日韩另类美女| 波多野结衣的一区二区三区| 久久亚洲免费视频| 天天色综合天天| 91免费国产在线| 国产精品久久三| 国产综合久久久久影院| 91精品午夜视频| 亚洲综合成人网| 99国产精品久久久久久久久久| 欧美精品一区二区三区一线天视频| 午夜免费久久看| 在线这里只有精品| 中文字幕日韩av资源站| 国产91在线观看丝袜| 欧美成人一区二区三区在线观看| 亚洲午夜成aⅴ人片| av午夜精品一区二区三区| 久久九九久精品国产免费直播| 青青草成人在线观看| 欧美精品精品一区| 亚洲午夜久久久久久久久电影网 | 欧美—级在线免费片| 国产精品中文字幕一区二区三区| 日韩三级视频在线观看| 视频一区二区三区入口| 欧美三级电影网站| 艳妇臀荡乳欲伦亚洲一区| 91色视频在线| 亚洲人成在线观看一区二区| 99综合电影在线视频| 综合久久综合久久| av中文字幕一区| 中文av一区特黄| a在线播放不卡| 亚洲蜜臀av乱码久久精品| 色婷婷精品久久二区二区蜜臂av | 日韩av一区二区三区| 欧美一区二区视频在线观看2022 | 丁香一区二区三区| 中文字幕精品一区二区精品绿巨人 | 欧美高清在线一区| 丁香婷婷深情五月亚洲| 欧美国产禁国产网站cc| 成人av电影免费在线播放| 中文子幕无线码一区tr| av一区二区三区| 亚洲国产精品久久艾草纯爱| 国产精品美女一区二区在线观看| 欧美色图天堂网| 亚洲午夜影视影院在线观看| 色综合婷婷久久| 肉丝袜脚交视频一区二区| 欧美一区二区三区播放老司机| 久久精品国产99国产| 中文字幕av一区二区三区| 色哟哟国产精品| 青青草国产成人99久久| 国产亚洲女人久久久久毛片| 色综合色综合色综合| 日韩成人精品在线观看| 久久综合色婷婷| av不卡免费电影| 奇米精品一区二区三区在线观看| 久久亚洲捆绑美女| 色婷婷亚洲综合| 精品一区二区三区蜜桃| 亚洲精品乱码久久久久久日本蜜臀|