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

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

?? snake.c

??   單片機(jī)編程               C語言實(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一区二区三区免费野_久草精品视频
欧美自拍偷拍一区| 欧美精品第1页| 亚洲国产精品人人做人人爽| 欧美一区二区三区公司| 欧美电影影音先锋| 日本一区二区三区国色天香| 国产99精品视频| 亚洲免费资源在线播放| 日韩美女在线视频| 色综合久久六月婷婷中文字幕| 日本不卡高清视频| 亚洲精品五月天| 久久久久久毛片| 欧美一卡二卡三卡| 欧美视频中文一区二区三区在线观看| 国产麻豆一精品一av一免费| 岛国精品在线播放| 午夜精品福利久久久| 国产精品久久久久久久久免费丝袜| 91精品国产综合久久久久久漫画| 99热精品一区二区| 国产一区二区按摩在线观看| 午夜精品福利一区二区三区av| 亚洲丝袜另类动漫二区| 欧美国产一区二区| 久久久久国产精品厨房| 精品国产免费一区二区三区四区| 欧美人与性动xxxx| 欧美日韩国产电影| 欧美在线一二三| 欧美午夜影院一区| 91九色02白丝porn| 色噜噜偷拍精品综合在线| av在线播放成人| 成人黄页在线观看| 91丨九色porny丨蝌蚪| 丁香啪啪综合成人亚洲小说| 国产精品一区二区x88av| 九一久久久久久| 久久精品国产精品青草| 蜜桃视频免费观看一区| 蜜臀av一区二区三区| 老司机免费视频一区二区三区| 日韩国产在线观看| 日韩精品1区2区3区| 日韩电影在线免费看| 亚洲国产精品视频| 奇米影视一区二区三区| 日韩av网站免费在线| 麻豆精品在线观看| 国产一区二区视频在线| 国产裸体歌舞团一区二区| 国产精品一区二区久激情瑜伽| 国产福利一区二区三区视频在线| 国产高清精品在线| 成人高清在线视频| 色欧美乱欧美15图片| 欧美日韩五月天| 一区二区三区产品免费精品久久75| 国产精品卡一卡二卡三| 最新国产成人在线观看| 亚洲国产一区在线观看| 日本欧美一区二区三区| 激情久久五月天| 不卡欧美aaaaa| 在线视频国内自拍亚洲视频| 欧美日韩国产免费一区二区| 欧美成人三级在线| 国产精品久久久一区麻豆最新章节| 亚洲欧洲一区二区三区| 天堂一区二区在线| 国产在线精品视频| a亚洲天堂av| 欧美日韩精品欧美日韩精品一综合| 日韩网站在线看片你懂的| 久久综合狠狠综合久久激情| 亚洲天堂久久久久久久| 午夜精品久久久久影视| 国产精品一区免费视频| 在线观看一区日韩| 精品日韩欧美在线| 亚洲男女毛片无遮挡| 久热成人在线视频| 99re成人精品视频| 欧美一区二区女人| 国产精品黄色在线观看| 日韩激情在线观看| www.爱久久.com| 日韩一区二区三区视频| 国产精品久久国产精麻豆99网站 | 欧美日韩高清不卡| 久久久国际精品| 亚洲综合精品久久| 欧美一区二区视频在线观看2022| 久久精品视频一区二区三区| 亚洲制服丝袜一区| 成人精品一区二区三区四区| 91精品欧美福利在线观看| 国产精品成人免费在线| 久久99热国产| 欧美视频一区二| 国产精品久久久久aaaa| 蜜臀av在线播放一区二区三区| 色综合av在线| 国产视频一区二区在线| 久久99国产乱子伦精品免费| 欧美在线观看禁18| 中文字幕乱码久久午夜不卡| 日本aⅴ精品一区二区三区| 日本乱人伦aⅴ精品| 久久久不卡影院| 麻豆国产精品一区二区三区| 欧美在线观看视频一区二区三区| 国产精品天天摸av网| 精品一区二区三区久久久| 欧美性欧美巨大黑白大战| 中文成人综合网| 国产一区二区三区精品欧美日韩一区二区三区| 欧美日韩一区二区三区在线 | 欧美一区二区三区人| 一区二区三区四区高清精品免费观看 | 五月激情六月综合| 色狠狠色噜噜噜综合网| 中文字幕一区免费在线观看| 国产高清精品在线| 国产亚洲午夜高清国产拍精品 | 97se亚洲国产综合自在线观| 中文字幕成人网| 国产成人亚洲综合a∨婷婷| 精品对白一区国产伦| 久久精品理论片| 日韩欧美在线网站| 韩国午夜理伦三级不卡影院| 日韩欧美在线1卡| 奇米影视一区二区三区小说| 欧美一区二区网站| 狠狠色狠狠色综合| 久久久亚洲精品一区二区三区| 极品美女销魂一区二区三区免费| 精品日韩在线一区| 麻豆成人久久精品二区三区红| 欧美成人官网二区| 国产一区二区视频在线播放| 久久久久久久久久美女| 成人三级在线视频| 日韩伦理免费电影| 欧美三级视频在线播放| 午夜成人免费电影| 日韩一区国产二区欧美三区| 国精产品一区一区三区mba视频| 久久久亚洲高清| thepron国产精品| 亚洲综合免费观看高清完整版在线| 欧美系列在线观看| 免费观看在线色综合| 精品国产污污免费网站入口| 国产福利一区二区| 亚洲精品免费在线| 欧美一区二区三区日韩视频| 国产成人在线观看免费网站| 国产精品卡一卡二| 欧美喷潮久久久xxxxx| 看国产成人h片视频| 欧美激情综合五月色丁香小说| a4yy欧美一区二区三区| 亚洲电影激情视频网站| 日韩精品一区二区三区蜜臀| 国产成人综合亚洲网站| 一区二区三区在线观看视频| 欧美电影免费观看完整版| 国产激情一区二区三区桃花岛亚洲| 成人欧美一区二区三区黑人麻豆| 欧美在线综合视频| 国产美女一区二区| 一级中文字幕一区二区| 欧美成人a∨高清免费观看| proumb性欧美在线观看| 日本欧美在线观看| 成人欧美一区二区三区小说| 欧美一区二区三区在线看| 高清成人免费视频| 日本欧美韩国一区三区| 亚洲欧洲成人av每日更新| 欧美一级二级三级蜜桃| www.在线成人| 久久国产日韩欧美精品| 亚洲美女淫视频| 亚洲精品在线免费播放| 日本高清不卡aⅴ免费网站| 激情六月婷婷综合| 偷拍日韩校园综合在线| 国产欧美视频一区二区三区| 欧美精品第1页| 99re在线精品| 国产黄人亚洲片| 免费高清视频精品| 亚洲一区免费在线观看| 国产精品女人毛片| 精品国产99国产精品| 欧美视频精品在线|