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

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

?? snake.c

?? C編寫的貪吃蛇代碼
?? 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;
}
//-----------------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人一级视频| 亚洲靠逼com| 一区二区三区日韩精品视频| 日韩av网站免费在线| av影院午夜一区| 精品国产一区二区三区av性色| 亚洲美女一区二区三区| 国产精品一区专区| 日韩一区二区三区四区| 亚洲福利一二三区| 99精品久久久久久| 国产亚洲欧美色| 久久精品国产999大香线蕉| 在线看不卡av| 国产精品亲子乱子伦xxxx裸| 国内精品写真在线观看| 欧美久久一区二区| 亚洲国产另类av| 99久久精品免费看国产免费软件| 26uuu精品一区二区三区四区在线| 亚洲国产一二三| 色婷婷综合久久久| 中文字幕一区二区三区乱码在线 | 国产日本一区二区| 蜜芽一区二区三区| 欧美午夜一区二区三区| 亚洲精品福利视频网站| 99vv1com这只有精品| 国产精品妹子av| 丁香一区二区三区| 国产丝袜美腿一区二区三区| 国内精品不卡在线| 久久天天做天天爱综合色| 韩国毛片一区二区三区| 久久综合九色综合欧美就去吻| 毛片av一区二区三区| 日韩一级黄色片| 久草在线在线精品观看| 精品处破学生在线二十三| 狠狠色丁香婷综合久久| 久久免费看少妇高潮| 国产精品一区二区久激情瑜伽 | 欧美一区二区在线免费播放| 亚洲国产精品久久久男人的天堂| 欧美日韩一区中文字幕| 日韩一区精品字幕| 欧美一级夜夜爽| 久久国产精品色婷婷| 欧美大白屁股肥臀xxxxxx| 国产精品综合视频| 国产精品久久午夜夜伦鲁鲁| 一本到三区不卡视频| 午夜久久久久久久久久一区二区| 欧美一区欧美二区| 国产资源在线一区| 亚洲视频综合在线| 欧美日韩久久久一区| 久久精品99国产精品| 欧美精彩视频一区二区三区| 色婷婷综合久久| 美女一区二区视频| 中文字幕在线免费不卡| 欧美日韩亚洲高清一区二区| 久久国产精品第一页| 中文字幕日本不卡| 欧美一区国产二区| 暴力调教一区二区三区| 日韩国产精品大片| 国产精品―色哟哟| 91精品免费在线| 成人动漫精品一区二区| 日韩激情一二三区| 国产精品久久久久影视| 337p亚洲精品色噜噜噜| 成人性生交大片| 免费成人你懂的| 亚洲精选视频在线| 久久久久久毛片| 欧美精品久久99久久在免费线| 福利一区二区在线观看| 日韩av中文字幕一区二区| 中文字幕在线观看不卡| 日韩精品一区在线| 欧美三级视频在线| 成人精品免费看| 国产一区视频在线看| 亚洲成人av电影| 亚洲日穴在线视频| 国产午夜精品久久久久久免费视 | 久久欧美中文字幕| 欧美日韩视频在线观看一区二区三区 | 欧美在线观看视频一区二区| 国产一区二区剧情av在线| 亚洲成人av一区二区| 亚洲丝袜另类动漫二区| 久久精品人人做人人爽97| 3d成人h动漫网站入口| 欧美伊人久久大香线蕉综合69| 豆国产96在线|亚洲| 韩国精品一区二区| 九九热在线视频观看这里只有精品 | 日韩二区三区四区| 亚洲在线成人精品| 亚洲精品国产精华液| 国产婷婷色一区二区三区 | 在线播放/欧美激情| 99综合影院在线| 色综合天天综合网天天看片| 国产精品色眯眯| 久久精品人人做人人爽人人| 精品少妇一区二区三区在线视频| 欧美区在线观看| 欧美日韩视频不卡| 在线不卡免费av| 欧美精品久久天天躁| 91精品免费观看| 制服.丝袜.亚洲.中文.综合| 制服丝袜日韩国产| 日韩一区二区免费在线观看| 欧美疯狂做受xxxx富婆| 91精品国产一区二区三区 | 欧美精三区欧美精三区| 7777精品伊人久久久大香线蕉的 | 麻豆91免费观看| 国产一区二区在线视频| 精品一区二区三区不卡 | 在线欧美小视频| 欧美午夜影院一区| 欧美一区二区精品在线| 欧美成人三级在线| 欧美经典一区二区三区| 亚洲欧洲日韩av| 亚洲一区二区三区四区在线免费观看| 亚洲国产精品久久久久秋霞影院| 香蕉加勒比综合久久| 久久精品国产免费| 国产99一区视频免费| 91色在线porny| 欧美日韩高清一区二区| 精品少妇一区二区三区免费观看 | 国产福利一区二区| 99re热这里只有精品视频| 欧美情侣在线播放| 国产午夜一区二区三区| 玉足女爽爽91| 久久精品国产99国产精品| 成人av电影在线播放| 欧美亚洲国产bt| 26uuu成人网一区二区三区| 亚洲欧洲在线观看av| 日韩电影在线观看电影| 国产毛片精品国产一区二区三区| 不卡一区二区三区四区| 欧美精品视频www在线观看 | 日韩欧美一卡二卡| 国产精品久久久久久久久搜平片 | 欧美一级日韩免费不卡| 国产精品人妖ts系列视频| 午夜精品久久久久久久蜜桃app| 韩国精品一区二区| 日本久久电影网| 久久久久久日产精品| 亚洲18色成人| 成人免费高清在线| 91精品国产福利| 亚洲免费观看高清完整版在线观看熊 | 日韩三级电影网址| 亚洲精品成人悠悠色影视| 国产真实乱子伦精品视频| 欧美视频三区在线播放| 国产精品女同互慰在线看| 免费的国产精品| 欧美日韩精品一二三区| 国产精品伦理在线| 国产在线视频一区二区| 欧美日韩精品福利| 亚洲欧洲三级电影| 国产iv一区二区三区| 精品91自产拍在线观看一区| 天天综合色天天综合| 色天天综合色天天久久| 国产精品久久午夜| 国产成人免费视频网站| 精品国产成人系列| 日本免费新一区视频| 欧美日韩精品久久久| 亚洲午夜久久久久久久久电影网 | 成人亚洲一区二区一| 日韩精品一区二区三区视频在线观看 | 麻豆精品国产传媒mv男同| 欧美人与禽zozo性伦| 亚洲一级电影视频| 在线观看一区二区视频| 中文字幕一区二区三区四区| 粉嫩绯色av一区二区在线观看| 久久久久久9999| 国产精品77777| 久久综合久久鬼色| 国产成人免费视频一区| 中文字幕国产精品一区二区|