C语言编写飞机大战
# include <stdio.h>
# include <stdlib.h>
# include <conio.h>
# include <Windows.h>
int score = 0 ;
int plane_col, plane_row;
int bullet_col, bullet_row;
int area_height, area_width;
int enemy_col, enemy_row;
int enemy_vh, enemy_vv;
int a[ 100 ] [ 100 ] = { 0 } ;
void gotoxy ( int x, int y) {
HANDLE handle = GetStdHandle ( STD_OUTPUT_HANDLE) ;
COORD pos;
pos. X = x;
pos. Y = y;
SetConsoleCursorPosition ( handle, pos) ;
}
void HideCursor ( ) {
CONSOLE_CURSOR_INFO cursor_info = { 1 , 0 } ;
SetConsoleCursorInfo ( GetStdHandle ( STD_OUTPUT_HANDLE) , & cursor_info) ;
}
void startup ( )
{
area_height = 20 ;
area_width = 30 ;
plane_col = 14 ;
plane_row = 10 ;
bullet_col = 0 ;
bullet_row = - 1 ;
enemy_col = rand ( ) % area_width;
enemy_row = 0 ;
enemy_vh = 0 ;
enemy_vv = 1 ;
}
void show ( )
{
gotoxy ( 0 , 0 ) ;
int i, j;
for ( i = 0 ; i < area_height; i++ )
{
for ( j = 0 ; j < area_width; j++ )
{
if ( i == plane_row && j == plane_col)
{
printf ( "*" ) ;
}
else if ( i == bullet_row && j == bullet_col)
printf ( "|" ) ;
else if ( i == enemy_row && j == enemy_col)
printf ( "@" ) ;
else printf ( " " ) ;
}
printf ( "\n" ) ;
}
printf ( "score:%d\n" , score) ;
}
void updateWithInput ( )
{
char input;
if ( kbhit ( ) ) {
input = getch ( ) ;
switch ( input)
{
case 'w' :
if ( plane_row != 0 )
plane_row-- ; break ;
case 'a' :
if ( plane_col != 0 )
plane_col-- ; break ;
case 'd' :
if ( plane_col != area_width)
plane_col++ ; break ;
case 's' :
if ( plane_row != area_height)
plane_row++ ; break ;
case ' ' :
if ( bullet_row < 0 )
{
bullet_row = plane_row - 1 ;
bullet_col = plane_col;
}
break ;
default :
break ;
}
}
}
int IsCrash ( ) {
if ( enemy_col == plane_col && enemy_row == plane_row) {
return 1 ;
}
return 0 ;
}
void updateWithourInput ( )
{
bullet_row-- ;
static int count = 0 ;
count ++ ;
if ( count == 40 ) {
enemy_row += enemy_vv;
enemy_col += enemy_vh;
count = 0 ;
}
}
void crack ( ) {
if ( enemy_row > area_height) {
bullet_row = - 1 ;
enemy_row = - 1 ;
enemy_col = rand ( ) % area_height;
}
else if ( bullet_col == enemy_col && bullet_row == enemy_row) {
score += 10 ;
bullet_row = - 1 ;
enemy_row = - 1 ;
enemy_col = rand ( ) % area_height;
}
}
int IsFinish ( ) {
if ( score == 100 ) {
system ( "cls" ) ;
printf ( "congretulations!!!" ) ;
score = 0 ;
_sleep ( 500 ) ;
system ( "pause" ) ;
return 1 ;
}
else if ( IsCrash ( ) == 1 ) {
system ( "cls" ) ;
printf ( "you have lost!!!" ) ;
score = 0 ;
_sleep ( 500 ) ;
system ( "pause" ) ;
return 1 ;
}
return 0 ;
}
int main ( )
{
HideCursor ( ) ;
startup ( ) ;
while ( 1 )
{
show ( ) ;
updateWithInput ( ) ;
updateWithourInput ( ) ;
crack ( ) ;
if ( IsFinish ( ) == 1 ) {
startup ( ) ;
continue ;
}
}
return 0 ;
}