C语言 飞机大战

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;//ÓÎÏ·ÇøÓò  0-n-1
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;
}

//int[][] planeArray() {
    
    
//	
//	a[plane_col][plane_row] = 1;
//	for (int i = plane_col - 2; i < plane_col + 2; i++)
//		a[i][plane_row + 1] = 1;
//	a[plane_col - 1][plane_row + 2] = 1; a[plane_col + 1][plane_row + 2] = 1;
//
//	return a;
//}

void show()//Öð¸ö×Ö·ûɨÃè²¢´òÓ¡ 
{
    
    
	gotoxy(0, 0);
	int i, j;
	//ÏÔʾ
	//system("cls");
	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;
}

Guess you like

Origin blog.csdn.net/m0_45311187/article/details/120305204