#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 35
void print (int [][n]);//Output function
void Movebul (int [][n]);//bullet Move function
void Movepla (int [][n]);//enemy Movement function
void setting (void);//Set function
void menu (void);//Menu function
int scr[22][n]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//Global Variables: interface, my machine initial position, interface width, enemy speed, enemy plane density, score, death
Main (void)
{
menu ();
int i=0,j=0;
Scr[21][pl]=1;
scr[0][5]=3;
while (1)
{
if (Kbhit ())
Switch (Getch ())//control move around and enter menu
{
Case ' A ': Case ' a ':
if (pl>0)
Scr[21][pl]=0,scr[21][--pl]=1;
Break
Case ' d ': Case ' d ':
if (pl<width-2)
Scr[21][pl]=0,scr[21][++pl]=1;
Break
Case ' W ': Case ' W ':
scr[20][pl]=2;
Break
Case 27:
Setting ();
Break
}
if (++j%density==0)//control the speed of production of enemy aircraft
{
J=0;srand (Time (NULL));
Scr[0][rand ()%width]=3;
}
if (++i%speed==0)//control enemy movement speed, relative to the speed of the bullet movement
Movepla (SCR);
Movebul (SCR);
Print (SCR);
if (i==30000)
i=0;//lest I cross the border
}
}
void print (int a[][n])
{
System ("CLS");
int i,j;
for (i=0;i<22;i++)
{
a[i][width-1]=4;
for (j=0;j<width;j++)
{
if (a[i][j]==0)
printf ("");
if (a[i][j]==1)
printf ("\5");//output the symbol of my machine
if (a[i][j]==2)
printf ("."); /Bullets
if (a[i][j]==3)
printf ("\3"); Output enemy Symbol
if (a[i][j]==4)
printf ("|");
if (i==0&&j==width-1)
printf ("Score:%d", score);//The top right corner shows the score
if (i==1&&j==width-1)
printf ("Death:%d", death);
if (i==2&&j==width-1)
printf ("Settings: Esc");
if (i==3&&j==width-1)
printf ("Copyright: Wang Yu");
}
printf ("\ n");
}
}
void Movebul (int a[][n])
{
int i,j;
for (i=0;i<22;i++)
for (j=0;j<width;j++)
{
if (i==0&&a[i][j]==2)
a[i][j]=0;
if (a[i][j]==2)
{
if (a[i-1][j]==3)
score+=10,printf ("\7");
a[i][j]=0,a[i-1][j]=2;
}
}
}
void Movepla (int a[][n])
{
int i,j;
for (i=21;i>=0;i--)//from the last line up is to avoid the enemy aircraft directly rushed to the group.
for (j=0;j<width;j++)
{
if (i==21&&a[i][j]==3)
a[i][j]=0;//the bottom row is assigned a value of 0 to avoid crossing.
if (a[i][j]==3)
a[i][j]=0,a[i+1][j]=3;
}
if (a[20][pl]==3&&a[21][pl]==1)
death++;
}
void setting (void)
{
int sw=0,i,j;
System ("CLS");
do{sw=0;printf ("\ n the size of the game interface: 1. Big 2. >>");
Switch (Getche ())
{
Case ' 1 ':
width=34;
Break
Case ' 2 ':
width=24;
Break
Default
printf ("\ n error, please re-select ... \ n");
Sw=1;
}
}
while (SW);
Do
{
sw=0;
printf ("\ n Please select enemy aircraft density: 1.2. Medium 3. Small >>");
Switch (Getche ())
{
Case ' 0 ':
density=10;
Break
Case ' 1 ':
density=20;
Break
Case ' 2 ':
density=30;
Break
Case ' 3 ':
density=40;
Break
Default
printf ("\ n error, please re-select ... \ n");
Sw=1;
}
}while (SW);
Do
{
sw=0;
printf ("\ nthe enemy aircraft speed: 1. Fast 2.3. Slow >>");
Switch (Getche ())
{
Case ' 1 ':
speed=2;
Break
Case ' 2 ':
speed=3;
Break
Case ' 3 ':
speed=4;
Break
Default
printf ("\ n error, please re-select ... \ n");
Sw=1;
}
}while (SW);
for (i=0;i<22;i++)
for (j=0;j<45;j++)
scr[i][j]=0;
Scr[21][pl=9]=1;
printf ("\ n Press any key to save ...");
Getch ();
}
void menu (void)
{
printf ("Description: Press a D to control my flight, W fired bullets \ n set: Please press esc\n to start the game: any key \ n by Yan_xu");
if (Getch () ==27)
Setting ();
}
learning experience of aircraft war
This lesson through the game programming experience how programming is used for game development, although there is no such programming technology, but by looking at similar code, analysis code, I believe that the development of the game is just right.
For this game code analysis is as follows:
1. Define the function first
2. Define function type, screen width, speed, enemy plane density, score, death int scr[22][n]={0},pl=9,width=24,speed=3,density=30,score=0,death=0; This program uses the shaping int.
3. Control the aircraft's movement coordinates: case A: The plane moves down one cell in the y-axis. Case d: The plane moves up one grid in the y-axis, and W is the position of the bullet, less than the x-axis of the plane.
4. Bonus Rule of death: if the position of the bullet is XY and the enemy's coordinates are the same, the bullet hits the enemy, plus points. On the other hand, the coordinates of the enemy plane and I machine life minus one. Life is 0 and death.
5. Critical position: Limited in the coordinate area the screen size cannot be exceeded.
6. Set the interface size of the aircraft speed, enemy aircraft density and control the direction of the key.
Aircraft vs. C Language Programming learning experience