2-移动的飞机

可以根据“W A S D”控制小飞机的移动,如果不输入就朝上次的方向一直飞 

【总结】

目前,“动”的实现是,通过,<清屏,打印与上次不一样的屏幕>,造成视觉的“动”

 

缺点是,清屏会造成屏闪,因为哪怕没动,屏幕的点也会先清再画。。

如果有一种数据库,软件根据库每秒自动打印n次屏幕,如果上次的某点与这次不变,则不<清除再画>,应该会好很多。

ps:以后再说。

 

【1】根据《C语言课程设计与游戏开发实践教程》,仿。并做了一些改动

【2】思路

void main()
{
    //确定飞机的坐标(x,y),移动通过(x,y)控制

    while(1)
    {
        //清屏
        //根据(x,y)打印飞机
        
        //如果有输入,改变(x,y)
        //如果无输入,继续上一次的改变
    }

}

【3】代码

#include <stdio.h>
#include <stdlib.h>//提供system();
#include <conio.h> //提供kbhit()//getch()

void main(void)
{	
	int x=5,y=10;//位置变量,随意
	int i;
	int a[2]={0};//用于记忆,上一次的input
	char input;
	

	while(1)
	{
		system("cls");
		
		for(i=0;i<x;i++){printf("\n");}
		
		for(i=0;i<y;i++){printf(" ");}printf("  *  \n");
		for(i=0;i<y;i++){printf(" ");}printf("*****\n");
		for(i=0;i<y;i++){printf(" ");}printf(" * * \n");
		
		if(kbhit())	//检测有无输入,无则执行上一次
	{	
		input=getch();
		switch(input)
		{
		case 'w':{a[0]=-1;a[1]=0;}break;  //上
		case 's':{a[0]=+1;a[1]=0;}break;  //下
		case 'a':{a[0]=0;a[1]=-1;}break;  //左
		case 'd':{a[0]=0;a[1]=+1;}break;  //右
		}
	}

	x+=a[0];y+=a[1];

	}
	
}

 

实际上还可以加函数 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值