可以根据“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];
}
}
实际上还可以加函数