简单的飞机游戏——C语言课程设计与游戏开发中的源代

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
//函数全局变量 
int position_x,position_y;		//飞机位置 
int bullet_x,bullet_y;			//子弹位置
int high,width;					//游戏换面尺寸 
int enemy_x,enemy_y;
int score=0;
void HideCursor();
//W,A,D,S键可控制飞机移动
//定义隐藏光标函数
void HideCursor()
{
	CONSOLE_CURSOR_INFO cursor;    
	cursor.bVisible = FALSE;    
	cursor.dwSize = sizeof(cursor);    
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);    
	SetConsoleCursorInfo(handle, &cursor);
}
//清屏幕函数 
void gotoxy(int x, int y) 
{
    COORD pos = {x,y};
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄
    SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置
}
void startup()			//数据初始化
{
	high = 18;
	width = 20;
	position_x =  high/2;
	position_y =  width/2;
	bullet_x=-1;
	bullet_y=position_y;
	enemy_x=0;
	enemy_y=width/2;
}
void show()			//显示画面
{
	
	int i,j;
	gotoxy(0,0);				//清屏 
	for(i=0;i<=high;i++)
	{
		for(j=0;j<=width;j++)
		{
			if((i==position_x)&&(j==position_y))
			{
				printf("*");		//输出星花 
			}
			else if((i==bullet_x)&&(j==bullet_y))
			{
				printf("|");
			}
			else if((i==enemy_x)&&(j==enemy_y))
			{
				printf("@");
			}
			else if(j==width)
			{
				printf("|");
			}
			else if(i==high)
			{
				printf("_");
			}
			else
			{
				printf(" ");
			}
			
		}
		printf("\n");	
	}	
	printf("得分score:%d",score);
}
void updatewithinput()				//与用户输入有关的更新
{
	char input ;
	if(kbhit())
	{
		input = getch();
		if(input=='a')
			position_y--;
		if(input=='d')
			position_y++;
		if(input=='w')
			position_x--;
		if(input=='s')
			position_x++;
		if(input==' ')
		{
			bullet_x=position_x-1;
			bullet_y=position_y;
		}	
	}
	
}
void updatewithoutinput()					//与用户输入无关的更新
{
	if((bullet_x==enemy_x)&&(bullet_y==enemy_y))
	{
		score++;
		enemy_x=0;
		enemy_y=rand() %width;
		bullet_x=-1;
	}
	if(bullet_x>-1)
		bullet_x--;
	static int speed=0; 
	if(speed<50)
		speed++;
	if(enemy_x>high)
	{	
		enemy_x=0;
		enemy_y=rand() %width;	
	}
	else
	{
		if(speed==50)
		{
			enemy_x++;
			speed=0;
		}
			
	}
}
int main()
{
	startup();			//数据初始化 
	while(1)			//游戏循环执行 
	{
		show();			//显示画面 
		updatewithoutinput();		//与用户输入无关的更新 
		updatewithinput();			//与用户输入有关的更新
	}
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值