Red de conocimiento informático - Programación de la red - ¡Te ruego un pequeño programa escrito en lenguaje C para tu defensa! ! ! ! ! ! #! @###! ! !

¡Te ruego un pequeño programa escrito en lenguaje C para tu defensa! ! ! ! ! ! #! @###! ! !

#includelt;reg52.hgt;

#includelt;intrins.hgt;

//#includelt;math.hgt;

#includelt;stdlib.hgt;

#includelt;lcd12864.hgt;

bit arriba = P1^0; //arriba

bit abajo = P1 ^1; //Abajo

bit izquierdo = P1^2; //Izquierdo

bit derecho = P1^3; //Derecho

bit reset = P1^4; //Teclas de función

#define Snake_max_body 22

#define Key_Up 1

#define Key_Down 4

#define Key_Left 2

#define Key_Right 3

uchar Key_V_temp=0; //Último valor clave

uchar Key_Value;

código const uchar Failure[]={"Desafortunadamente, perdiste"};

const uchar code maker[]={"Diseñador: Miembro de la Machinery Association"};

const uchar code huiz []={"Presidente: Fang Jitong"};

const uchar code guanggao[]={"La Asociación de Robots le da la bienvenida"};

const uchar code t[] = {

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF , 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF , 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF

F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xE0 , 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xCE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF , 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xCE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF , 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xCE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xCE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xCE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF , 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xCE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, p>

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xCE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xCE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xCE, 0xFF , 0xFF , 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xCE, 0xFF, 0xFF, 0xF7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x07, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0x3F, 0xFF, 0x9F, 0xFF, 0

xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xCF, 0xFE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xCF , 0xFE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xCF, 0xFE, 0xFF, 0xFF, 0xE7, 0x3F,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xCF, 0xFE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xCF, 0xFE, 0xFF, 0xFF, 0xE7, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xCF, 0xFE, 0xFF , 0xFF, 0xE7, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0xC0, 0x0E, 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xE0, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF ,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF,

0xFF, 0xFF , 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF

,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF , 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFD, 0xE1, 0xF1, 0xF8, 0xFF, 0x9F, 0xFF, 0x7F, 0xF8, 0x00, 0xFD, 0xFB , 0xFF, 0x8F, 0xFF,

0xFF, 0xFD, 0xED, 0xF5, 0xBA, 0xFF, 0xBF, 0xFF, 0xBF, 0xFB, 0xDE, 0xFD, 0xF3, 0xFF, 0x77, 0xFF,

0xFF, 0xE0, 0x2D, ​​0xF1, 0xA8, 0xFF, 0x1F, 0xF8, 0x00, 0xF8, 0x00, 0xF0, 0x40, 0xFE, 0xFB, 0xFF,

0xFF, 0xF8, 0xED, 0xff, 0xb7, 0xff, 0x1f, 0xfb, 0xff, 0xfb, 0xDe, 0xfd, 0xf6, 0xf9, 0x04, 0xff,

0xff, 0xf5, 0x6d, 0xfc, 0x03, 0xfe, 0x4f, 0xfa , 0xF8 , 0x00, 0xFD, 0x36, 0x7F, 0xFF, 0xFF,

0xFF, 0xED, 0xAD, 0xFF, 0x9F, 0xFC, 0xE7, 0xFB, 0x6E, 0xFB, 0xDE, 0xFD, 0x6E, 0xBC, 0x00, 0xFF,

0xFF, 0xFD, 0xED, 0xF1, 0x28, 0xF9, 0xF3, 0xFB, 0x6C, 0xFB, 0xDE, 0xFC, 0xDE, 0xBF, 0x7F, 0xFF,

0xFF, 0xFD, 0xDD, 0x74, 0x62, 0xF3, 0xF9, 0xFB, 0xFF, 0xFB, 0xDA, 0xFD, 0xBE, 0xFE, 0xFB, 0xFF,

0xFF, 0xFD, 0xBE, 0x71, 0xF8, 0xE7 , 0xFC , 0xF2, 0x00, 0xF7, 0xDC, 0xFD, 0x7C, 0xFC, 0x01, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF , 0xFF , 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF , 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF , 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF , 0xFF, 0xFF,

0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF

};

//const uchar zhi[]={

//0xFF, 0xF3, 0x85, 0xE8, 0xCC, 0xED, 0x8D, 0xEF};

struct //Estructura: alimento

{

uchar X;

uchar Y

uchar Sí

}Alimento;

struct //Estructura: pequeña serpiente

{

uchar X[snake_max_body] //Coordenada X de la serpiente

{

uchar p>

uchar Y[snake_max_body]; // La coordenada Y de la serpiente

uchar Log // La longitud de la serpiente

uchar Life; //La vida de la serpiente

uchar Score; //Puntuación de la serpiente

uchar Level //Nivel de la serpiente

}Snake;

void Init_time1() // Inicialización del temporizador, utilizado para generar números aleatorios

{

EA=1

ET1=1;

TMOD|=0X20 ;

TH1=0X01;

TL1=0X01;

TR1=1;

}

void Snake_init() //Sitio de inicialización de serpiente

{

uchar i;

línea(0, 0, 0, 80);

línea(0, 80, 50); , 80);

línea (50, 80, 50, 0);

línea (50, 0, 0, 0

Serpiente .Log); =2; //Definir la longitud de la serpiente inicializada

Snake.Life=0;

Snake.Score=0

// Food.Yes =1;

Key_Value=0;

for(i=0; ilt; Snake.Log; i ) //Asigna la serpiente al valor

{

Serpiente.X[i]=i 2

Serpiente.Y[i]=2

}

para (i =0;ilt;Snake.Log;i) //Dibuja la serpiente

{

dot(Snake.X[i], Snake.Y[i]);

}

}

key_press() // Detección de pulsación de tecla

{

// tecla uchar

arriba=1;

if(!up)

{

delay_ms(5); > if(!up)

{

Key_Value=1

}

mientras(!up);

}

abajo=1

if(!down)

{

delay_ms(5);

if(!down)

{

Key_Value=4

}

while(!down);

p>

}

left=1;

if(!left)

{

delay_ms(5 );

if(!left)

{

Key_Value=2

}

mientras( !izquierda) ;

}

derecha=1;

si(!derecha)

{

delay_ms(5 );

if(!right)

{

Key_Value=3

}

while( !up);

}

// return Key_Value

}

void Run_snake(void) //Serpiente; se mueve

{

uc

har i=0;

if((Key_Value==Key_Rightamp;amp;Key_V_temp!=Key_Left)||(Key_Value==Key_Leftamp;amp;Key_V_temp==Key_Right))

{

offdot(Snake. Log-1; i) //El cuerpo de la serpiente es la posición de su cuerpo de serpiente anterior

{

Snake.X[ i]=Serpiente.X[i 1];

Serpiente.Y[i]=Serpiente.Y[i 1];

}

Serpiente. X[Snake.Log-1]=Serpiente. X[Snake.Log-2] 0

Serpiente.Y[Snake.Log-1]=Serpiente.Y[Snake.Log-2] 1; ; //La cabeza de la serpiente se mueve en la dirección requerida

p>

for(i=0;ilt;Snake.Log;i) //Función de visualización de la serpiente

{

dot(Snake.X[i], Snake. Y[i]);

}

Key_V_temp=Key_Right //Guarda el valor actual para que pueda se utilizará la próxima vez que lo presione

}

if((Key_Value==Key_Leftamp;amp;Key_V_temp!=Key_Right)||(Key_Value==Key_Rightamp;amp;Key_V_temp= =Key_Left))

{

offdot(Snake. p>

Snake.X[i]=Snake.X[i 1];

Serpiente.Y[i]=Serpiente.Y[i 1];

}

Serpiente.X[Snake.Log-1]=Snake.X[Snake.Log-2 ] 0;

Serpiente.Y[Snake.Log-1]=Serpiente Y[Snake.Log-2]-1; .Log; i )

{

punto(Serpiente .X[i], Serpiente.Y[i]); p> Key_V_temp=Key_Left;

}

if( (Key_Value==Key_Upamp;amp;Key_V_temp!=Key_Down)||(Key_Value==Key_Downamp;amp;Key_V_temp==Key_Up ))

{

offdot(Snake.X[ 0]

, Snake.Y[0]);

for(i=0; ilt; Snake.Log-1; i )

{

Snake.X [i]=Serpiente.X[i 1];

Serpiente.Y[i]=Serpiente.Y[i 1]; .X[Snake.Log-1]=Snake.X[Snake.Log-2]-1;

Snake.Y[Snake.Log-1]=Snake.Y[Snake.Log-2 ] 0;

for(i=0; ilt; Snake.Log; i )

{

punto(Snake.X[i], Snake. Y[i]);

}

Key_V_temp=Key_Up

}

if(( Key_Value==Key_Downamp; amp; Key_V_temp!=Key_Up)||(Key_Value==Key_Up&Key_V_temp==Key_Down))

{

offdot(Snake.X[0], Snake.Y[0] ] );

for(i=0; ilt; Snake.Log-1; i )

{

Snake.X[i]=Serpiente X. [i 1];

Serpiente.Y[i]=Serpiente.Y[i 1]

}

Serpiente.X[Snake.Log - 1]=Snake.X[Snake.Log-2] 1;

Snake.Y[Snake.Log-1]=Snake.Y[Snake.Log-2]

for(i=0;ilt;Snake.Log;i)

{

dot(Snake.X[i], Snake.Y[i]);

}

Key_V_temp=Key_Down;

}

if((Snake.X[Snake.Log-1]gt;=50 ) ||(Snake.Y[Snake.Log-1]gt;=80)||(Snake.X[Snake.Log-1]==0)||(Snake.Y[Snake.Log-1]= = 0))//Determina si la cabeza de la serpiente golpea la pared

{

Snake.Life=1

}

para ( i=3; ilt; Snake.Log; i ) //Empieza desde la tercera sección para determinar si la cabeza de la serpiente te ha mordido

{

if((Snake.X [i]= =Serpiente.X[0])amp;amp;(Serpiente.Y[i]==Serpiente.Y[0]))

{

Serpiente. Vida=1;

}

}

/* if(Serpiente.Vida==1)

{

>

i=Key_Value;

// Display_dead( i

// clear()

write_comd(0x34); >

}*/

/* if(Snake.Log==snake_max_body) //Determina si la serpiente es la más larga

{

/ / i=Key_Value;

write_comd(0x34);

// clear();

write_comd(0x30);

/ / Display_Pass(i);

}*/

if(Snake.X[Snake.Log-1]==Food.Xamp;amp;Snake.Y[Snake.Log - 1]==Food.Y)//Determinar si la serpiente ha comido comida

{

Snake.Log; //El número de segmentos de serpiente aumenta en 1

Serpiente .X[Snake.Log-1]=Comida.X;

Serpiente.Y[Snake.Log-1]=Comida.Y;

Serpiente .Score;

Food.Yes=1; //Establece el indicador de comida en 1

}

if(Food.Yes==0) ​​​​//Programa de frutas

{

dot(Food.X, Food.Y

}

if(Food.Yes); ==1)

{

while(1)

{

Food.X=TL1/5; number

Food .Y=TL1/4;

for(i=0; ilt; Snake.Log; i ) // Determina si las coordenadas de alimentos generadas coinciden con el cuerpo de la serpiente

{

if((Food.X==Serpiente.X[i])amp;amp;(Food.X==Serpiente.Y[i]))

descanso;

}

if(i==Snake.Log)

{

Comida.Sí= 0;

break ; //Generar coordenadas de alimentos válidas

}

}

}

}

void main()

{

lcd_init(); //Inicializar LCD

Init_time1(); > claro();

_nop_(); _nop_();

mapa(t); p>

clear();

serpiente_init();

// serpiente_

comida();

Comida.X=TL1/5;

Comida.Y=TL1/4;

// punto(TL1amp; 49, TL1amp; 79

// punto (TL1amp; 49, TL1amp; 79); (1)

{

if(Snake.Life)

{

// clear(); p> write_comd(0x34);

write_comd(0x30);

retardo_ms(100);

visualización (0x80, 7, error); >

mostrar(0x90, 8, fabricante);

mostrar (0x88, 6, huiz

mostrar (0x98, 8, guanggao); p> }

else

{

key_press();

Run_snake()

write_comd( 0x36);

}

if(Snake.Scorelt; 15)

delay_ms(150-10*Snake.Scorelt; 15)

> más

delay_ms(5);

}

}