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

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

?? snake.c

?? 單片機80c51的各類小程序的代碼
?? 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一区二区三区免费野_久草精品视频
制服.丝袜.亚洲.中文.综合| 日本一区二区三区在线观看| 精品一区二区在线视频| 国产精品成人网| 精品国产网站在线观看| 欧美三级韩国三级日本三斤| 丁香五精品蜜臀久久久久99网站 | 成人黄色在线网站| 秋霞午夜鲁丝一区二区老狼| 中文字幕综合网| 激情综合五月天| 一本一道久久a久久精品 | 国产日韩欧美精品电影三级在线| 色综合久久88色综合天天| 免费成人美女在线观看.| 亚洲精品福利视频网站| 久久精品视频免费| 精品久久久久久综合日本欧美 | 欧美日韩免费一区二区三区视频| 成人app在线观看| 久久成人18免费观看| 午夜精品一区二区三区三上悠亚| 亚洲欧美一区二区在线观看| 日韩欧美国产1| 欧美日韩国产美女| 欧美综合久久久| 色久综合一二码| voyeur盗摄精品| 夫妻av一区二区| 国产乱人伦偷精品视频免下载| 久久国产精品99精品国产| 奇米精品一区二区三区在线观看 | 99精品国产视频| 亚洲成人免费影院| 一区二区不卡在线播放| 日韩一区中文字幕| 亚洲日本一区二区| 综合久久国产九一剧情麻豆| 中文字幕亚洲一区二区va在线| 国产欧美日本一区二区三区| 欧美日韩国产小视频在线观看| 色噜噜狠狠色综合欧洲selulu| 99视频一区二区三区| 色偷偷一区二区三区| 色婷婷av一区| 4438x成人网最大色成网站| 欧美日韩电影在线播放| 91精品综合久久久久久| 精品国一区二区三区| 久久先锋影音av| 国产精品日产欧美久久久久| 亚洲欧美偷拍另类a∨色屁股| 亚洲天堂a在线| 一区二区三区在线免费播放| 亚洲成人黄色小说| 男女视频一区二区| 国产精品自在欧美一区| 成人小视频免费在线观看| 91久久精品一区二区| 欧美日韩精品一区二区三区蜜桃| 91精品综合久久久久久| 久久精品人人爽人人爽| 国产欧美精品一区aⅴ影院 | 欧美精品v日韩精品v韩国精品v| 欧美精品色一区二区三区| 欧美成人精品福利| 欧美激情中文不卡| 中文字幕av一区二区三区免费看| 亚洲欧洲日产国产综合网| 亚洲精品精品亚洲| 蜜桃av一区二区| 成年人国产精品| 欧美日韩高清在线| 久久美女艺术照精彩视频福利播放| 国产精品免费丝袜| 五月开心婷婷久久| 国产一区二区看久久| 欧洲精品一区二区三区在线观看| 日韩午夜激情av| 最新中文字幕一区二区三区 | 不卡av在线网| 欧美日韩免费视频| 国产午夜精品久久久久久免费视 | 日本不卡高清视频| 国产91精品欧美| 欧美性猛交xxxx乱大交退制版| 精品不卡在线视频| 亚洲成人免费电影| 成人va在线观看| 精品奇米国产一区二区三区| 亚洲视频一区二区在线| 青青草97国产精品免费观看无弹窗版| 国产黄色精品网站| 欧美日韩国产在线观看| 久久久亚洲精华液精华液精华液| 亚洲午夜激情网站| 成人av综合在线| 精品国产乱码久久久久久久| 亚洲综合丁香婷婷六月香| 粉嫩一区二区三区性色av| 欧美一级片在线看| 亚洲免费观看高清完整版在线| 久久国产免费看| 在线不卡一区二区| 亚洲少妇最新在线视频| 国产综合成人久久大片91| 7777精品伊人久久久大香线蕉完整版 | 成人激情午夜影院| 欧美一级国产精品| 亚洲欧美日本韩国| 成人黄色av网站在线| 精品美女被调教视频大全网站| 亚洲永久免费av| 色老汉一区二区三区| 国产精品沙发午睡系列990531| 极品少妇一区二区| 日韩亚洲欧美一区二区三区| 亚洲一区二区三区在线看| 成人国产电影网| 中文字幕免费一区| 高清久久久久久| 国产女人aaa级久久久级| 国产一区视频在线看| 欧美成人一区二区三区在线观看| 亚洲午夜一二三区视频| 欧美在线你懂的| 一区二区激情视频| 91免费国产在线观看| 亚洲丝袜美腿综合| 色又黄又爽网站www久久| 一区二区在线免费观看| 在线视频国内自拍亚洲视频| 一区二区久久久| 欧美日韩在线观看一区二区| 亚洲女与黑人做爰| 在线精品视频免费观看| 亚洲一区二区av在线| 欧美人成免费网站| 日本美女一区二区| 久久综合给合久久狠狠狠97色69| 狠狠色丁香婷婷综合久久片| 久久精品一区四区| 99久久综合国产精品| 一区二区三区欧美激情| 欧美人伦禁忌dvd放荡欲情| 免费看欧美女人艹b| 精品国产亚洲一区二区三区在线观看| 国产在线看一区| 欧美韩国日本不卡| 色香蕉久久蜜桃| 亚洲制服欧美中文字幕中文字幕| 欧美欧美欧美欧美首页| 美洲天堂一区二卡三卡四卡视频| 久久久午夜电影| 91欧美一区二区| 三级影片在线观看欧美日韩一区二区| 欧美一级免费大片| 国产一区二区不卡| 中文字幕视频一区| 3d成人动漫网站| 国产成人在线视频免费播放| 亚洲人成网站影音先锋播放| 欧美日韩午夜影院| 黄色小说综合网站| 亚洲美女淫视频| 欧美一区二区三区的| 成人晚上爱看视频| 亚洲成人av在线电影| 久久久精品欧美丰满| 欧美午夜精品久久久久久孕妇| 蜜臀精品久久久久久蜜臀| 国产精品视频线看| 欧美日韩国产综合草草| 国产成人一区在线| 亚洲国产精品久久不卡毛片| 久久精子c满五个校花| 在线视频欧美区| 国产精品一区二区果冻传媒| 亚洲精品高清在线观看| 亚洲精品一区二区三区精华液| 97久久精品人人做人人爽50路| 日韩高清欧美激情| **欧美大码日韩| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产精品天干天干在观线| 欧美美女激情18p| 成人app下载| 国产在线乱码一区二区三区| 亚洲欧美日韩成人高清在线一区| 欧美肥大bbwbbw高潮| 国产不卡免费视频| 欧美aⅴ一区二区三区视频| 亚洲欧洲综合另类在线| 久久精品一区二区三区不卡牛牛| 在线精品视频小说1| 成人精品一区二区三区四区 | 国产精品白丝jk黑袜喷水| 亚洲一区二区三区在线播放| 亚洲国产精品t66y| 日韩视频一区二区三区|