点阵贪吃蛇如何焊接
1. 求单片机 制作 贪吃蛇的程序和电路图!点阵式的!谢谢
你好,朋友。这个就是你想要的吧。
2. 求51单片机led8*8点阵贪吃蛇程序
#include<reg52.h>
#include<stdlib.h>
#define uchar unsigned char
sbit B0=P1^0;
sbit B1=P1^1;
sbit B2=P1^2;
sbit B3=P1^3;
uchar table[31]={0,10,20};
uchar count;
uchar way;
uchar T;
int tt;
uchar flag,flag2,flag3,flag4,flag5;
uchar u;
void delay(int n)
{
while(n--);
}
void reinit()
{
TR0=0;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
T=0;
way=0;
count=3;
table[0]=0;
table[1]=10;
table[2]=20;
P0=0x00;
P2=0xff;
delay(50000);
flag2=1;
flag4=2;
flag5=1;
table[count]=0;
}
void display()
{
int x,y;
int j;
for (j=0;j<=count;j++)
{
=table[j]/10;
y=table[j]%10;
switch (x)
{
case 0:
P0=0x01;
break;
case 1:
P0=0x02;
break;
case 2:
P0=0x04;
break;
case 3:
P0=0x08;
break;
case 4:
P0=0x10;
break;
case 5:
P0=0x20;
break;
case 6:
P0=0x40;
break;
case 7:
P0=0x80;
break;
default:
break;
}
switch (y)
{
case 0:
P2=0xfe;
break;
case 1:
P2=0xfd;
break;
case 2:
P2=0xfb;
break;
case 3:
P2=0xf7;
break;
case 4:
P2=0xef;
break;
case 5:
P2=0xdf;
break;
case 6:
P2=0xbf;
break;
case 7:
P2=0x7f;
break;
default:
break;
}
delay(50);
P2=0xff;
}
}
void init()
{
flag5=1;
flag4=2;
tt=0;
T=0;
flag=0;
flag2=1;
P1=0xff;
P0=0x00;
count=3;
EA=1;
EX0=1;
IT0=1;
ET0=1;
ET1=1;
TMOD=0x21;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TH1=0x00;
TH1=0x00;
way=0;
TR0=0;
TR1=1;
}
void keyscanf()
{
if (B0==0)
way=0;
if (B1==0)
way=1;
if (B2==0)
way=2;
if (B3==0)
way=3;
}
void le()
{
int k;
if (flag5)
for (k=0;k<count-1;k++)
table[k]=table[k+1];
switch (way)
{
case 0:
if (table[count-1]/10<7)
table[count-1]=table[count-1]+10;
else
flag2=0;
break;
case 1:
if (table[count-1]%10<7)
table[count-1]=table[count-1]+1;
else
flag2=0;
break;
case 2:
if (table[count-1]/10>0)
table[count-1]=table[count-1]-10;
else
flag2=0;
break;
case 3:
if (table[count-1]%10>0)
table[count-1]=table[count-1]-1;
else
flag2=0;
break;
default:
break;
}
flag=0;
if (flag2)
for (k=0;k<count-1;k++)
if (table[count-1]==table[k])
{
flag2=0;
break;
}
if (!flag2)
reinit();
else if (table[count-1]==table[count])
{
if (count<30)
{
count++;
flag5=0;
}
flag4=1;
table[count]=88;
}
else
flag5=1;
}
void random()
{
int k;
flag4=0;
do
{
flag3=1;
u=rand()%64;
u=u/8*10+u%8;
for (k=0;k<count;k++)
if (u==table[k])
{
flag3=0;
break;
}
}
while(!flag3);
table[count]=u;
}
void main()
{
init();
while(1)
{
if (flag4==1)
random();
if (flag)
le();
if (TR0)
keyscanf();
display();
}
}
void rup0() interrupt 0
{
if (flag2)
{
TR0=~TR0;
if (flag4==2)
flag4=1;
}
}
void time0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
T++;
if (T>=10)
{
T=0;
flag=1;
}
}
void time1() interrupt 3
{
tt++;
srand(tt);
if (tt>=2157)
tt=0;
}
3. 求8*8点阵屏C语言编写贪吃蛇的主程序
#include"stdio.h" /*1:blue 2:green 3:light blue 4:red 5:fen red 6:zong 7:white 8:light white*/
#include"conio.h"
#include"graphics.h"
#include"stdlib.h"
#include"math.h"
#include"dos.h"
#define PI1 3.1415926
void main()
{
DrawMap();
StartGame();
}
int snake_left=20,snake_top=20,snake_right=620,snake_bottom=460;
int snake_size=20;
int snake_body[2][1000],snake_length=5;
/*1:blue 2:green 3:light blue 4:red 5:fen red 6:zong 7:white 8:light white*/
/*rectangle(int left, int top, int right, int bottom);*/
int delay_time=188888;
int score=0; /*de fen*/
int food_x,food_y; /*shiwu zuobiao*/
DrawMap()
{
int snake_start_left=200,snake_start_top=200;
ChuShiHuaGraphics();
setcolor(3);
/*zhe shi hua bian jie, hua tu yong zhe ge*/
rectangle(snake_left-1,snake_top-1,snake_right+1,snake_bottom+1);
/*set pen color*/
setcolor(6);
snake_body[0][0]=snake_start_left,snake_body[1][0]=snake_start_top;
snake_body[0][1]=snake_start_left+snake_size,snake_body[1][1]=snake_start_top;
snake_body[0][2]=snake_start_left+2*snake_size,snake_body[1][2]=snake_start_top;
snake_body[0][3]=snake_start_left+3*snake_size,snake_body[1][3]=snake_start_top;
snake_body[0][4]=snake_start_left+4*snake_size,snake_body[1][4]=snake_start_top;
DrawSnake(); /*hua chu mo ren de 5 ge chang*/
}
DrawSnake()
{
int i;
int temp_color,a;
temp_color=getcolor();
for(i=0;i<snake_length;i++)
{
if(i>snake_length-2)
{
setcolor(4);/*red color*/
}
else
{
if(i%2==0)
{
a=6;
}
if(i%3==0)
{
a=2;
}
if(i%5==0)
{
a=3;
}
if(i%7==0)
{
a=5;
}
setcolor(a);
}
rectangle(snake_body[0][i],snake_body[1][i],snake_body[0][i]+snake_size,snake_body[1][i]+snake_size);
/* printf("x:%d,y:%d",snake_body[0][i],snake_body[1][i]);*/
/*5 ge ju xing fang kuai*/
}
setcolor(temp_color);
}
StartGame()
{
/*while(kbhit()==false)*/
/* {
turn_right();
}
*/
/*while(kbhit()==0)
{
turn_right();
}
*/
char direction=77;
/*int last_direction=77;*/
char sign='r';
char temp_sign='r';
CreateFood();
while(1)
{
/*
if ((last_direction==77&&direction==75)||(last_direction==75&&direction==77))
{
direction=last_direction;
}
if ((last_direction==80&&direction==72)||(last_direction==72&&direction==80))
{
direction=last_direction;
}
//printf("\nlast:%d,direc:%d\n",last_direction,direction);
*/
/*last_direction=direction;*/
if(sign=='u'&&temp_sign=='d'||sign=='d'&&temp_sign=='u')
{
sign=temp_sign;
}
if(sign=='l'&&temp_sign=='r'||sign=='r'&&temp_sign=='l')
{
sign=temp_sign;
}
/*switch(direction)
{
case 72:while(!kbhit()){turn_up();}; break;
case 80:while(!kbhit()){turn_down();}; break;
case 75:while(!kbhit()){turn_left();}; break;
case 77:while(!kbhit()){turn_right();}; break;
} */
switch(sign)
{
case 'u':while(!kbhit()){turn_up();}; break;
case 'd':while(!kbhit()){turn_down();}; break;
case 'l':while(!kbhit()){turn_left();}; break;
case 'r':while(!kbhit()){turn_right();}; break;
}
/*last_direction=direction;*/
temp_sign=sign;
direction=getch();
if(direction==72){sign='u';}
if(direction==80){sign='d';}
if(direction==75){sign='l';}
if(direction==77){sign='r';}
/*pause*/
if(direction=='w'||sign=='W')
while(!kbhit())
{
}
}
}
turn_up()
{
int i,tem_color;
tem_color=getcolor();
setcolor(getbkcolor());
rectangle(snake_body[0][0],snake_body[1][0],snake_body[0][0]+snake_size,snake_body[1][0]+snake_size);
setcolor(tem_color);
for(i=0;i<snake_length-1;i++)
{
snake_body[0][i]=snake_body[0][i+1];
snake_body[1][i]=snake_body[1][i+1];
}
snake_body[1][snake_length-1]-=snake_size;
DrawSnake();
delay(delay_time); /*sleep(1);*/
mp3();
IfDead();
IfEatFood();
}
turn_left()
{
int i,tem_color;
tem_color=getcolor();
setcolor(getbkcolor());
rectangle(snake_body[0][0],snake_body[1][0],snake_body[0][0]+snake_size,snake_body[1][0]+snake_size);
setcolor(tem_color);
for(i=0;i<snake_length-1;i++)
{
snake_body[0][i]=snake_body[0][i+1];
snake_body[1][i]=snake_body[1][i+1];
}
snake_body[0][snake_length-1]-=snake_size;
DrawSnake();
delay(delay_time); /*sleep(1);*/
mp3();
IfDead();
IfEatFood();
}
turn_right()
{
int i,tem_color;
tem_color=getcolor();
setcolor(getbkcolor());
rectangle(snake_body[0][0],snake_body[1][0],snake_body[0][0]+snake_size,snake_body[1][0]+snake_size);
setcolor(tem_color);
for(i=0;i<snake_length-1;i++)
{
snake_body[0][i]=snake_body[0][i+1];
snake_body[1][i]=snake_body[1][i+1];
}
snake_body[0][snake_length-1]+=snake_size;
DrawSnake();
delay(delay_time); /*sleep(1);*/
mp3();
IfDead();
IfEatFood();
}
turn_down()
{
int i,tem_color;
tem_color=getcolor();
setcolor(getbkcolor());
rectangle(snake_body[0][0],snake_body[1][0],snake_body[0][0]+snake_size,snake_body[1][0]+snake_size);
setcolor(tem_color);
for(i=0;i<snake_length-1;i++)
{
snake_body[0][i]=snake_body[0][i+1];
snake_body[1][i]=snake_body[1][i+1];
}
snake_body[1][snake_length-1]+=snake_size;
DrawSnake();
delay(delay_time); /*sleep(1);*/
mp3();
IfDead();
IfEatFood();
}
IfDead()
{
int fail=0,i;
int x = snake_body[0][snake_length-1];
int y = snake_body[1][snake_length-1];
if (snake_right<=x||x<snake_left||snake_top>y||y>=snake_bottom)
{
fail=1;
}
for(i=0;i<snake_length-1;i++)
{
if(x==snake_body[0][i] && y==snake_body[1][i])
{
fail=1;
}
}
if(fail==1)
{
/*clrscr();*/
closegraph();
printf("\n\n\n\n\nGame over!Your score is %d.",score);
getch();
exit(0);
}
}
IfEatFood()
{
int x = snake_body[0][snake_length-1];
int y = snake_body[1][snake_length-1];
if(x==food_x&&y==food_y)
{
score+=100;
sound(500);
delay(30000);
nosound();
CreateFood();
AddOneLength();
}
}
AddOneLength()
{
int i;
snake_length++;
for(i=snake_length-1;i>0;i--)
{
snake_body[0][i]=snake_body[0][i-1];
snake_body[1][i]=snake_body[1][i-1];
}
DrawSnake();
}
FoodMusic()
{
}
CreateFood()
{
int x,y;
while(1)
{
x=random(1000);
y=random(1000);
if(x<snake_right-snake_size&&x>snake_left&&y>snake_top&&y<snake_bottom-snake_size)
{
if(x%snake_size==0&&y%snake_size==0)
{
int i,IsInBodys = 0,tempcolor;
for(i=0;i<snake_length;i++)
{
if(x==snake_body[0][i] && y==snake_body[1][i])
{
IsInBodys=1; /*jin shi wu zuo biao zai she shen ti shang.*/
break;
}
}
if(IsInBodys==0)
{
tempcolor=getcolor();
setcolor(5);
rectangle(x,y,x+snake_size,y+snake_size);
setcolor(tempcolor);
food_x=x;
food_y=y;
break;
}
}
}
}
}
mp3()
{
sound(300);
delay(10000);
nosound();
}
ChuShiHuaGraphics()
{
int graphdriver=DETECT;
int graphmode=4;
initgraph(&graphdriver,&graphmode," ");
}
需要注意的是,这个程序只能用来编译!!!!!
4. 贪吃蛇到底怎样在点阵上移动
这是51单片机 LCD点阵 贪吃蛇 仿真实例,可以参考一下,下载附件仿真试试。
5. 51单片机 点阵 贪吃蛇怎么做
这是51单片机 LCD点阵 贪吃蛇 仿真实例,可以参考一下,下载附件仿真试试。
6. 谁能给我一个16点阵贪吃蛇的源代码单片机的代码~~
你好!你的点阵是怎么驱动的
7. 最简单的贪吃蛇游戏也很难设计
这个来我还真在大学的时候写过,自那个时候老师说写出来一个让他满意的程序,并能在单片机上运行成功就免考。大学免考的诱惑可是很大的啊,果断研究了快一个星期才研究出来。
其实并不是很难,就是一点数据结构的运用。你首先要知道你要使用什么来储存蛇身,怎么显示,怎么显示食物。这三点解决了,你就ok了。