C语言中怎么用键盘控制界面的物体移动?

如题所述

这里有个用C语言控制屏幕上小飞机运动的代码,供参考:
#include<stdio.h>
#include<Windows.h>
#include<time.h>
#include"stdio.h"
#include <conio.h>
#define N 35
int scr[22][N]={0},pl=9,width=24,speed=3,density=30;
int score=0,death=0;
void print(int a[][N])
{
system("cls");
int i,j;
for(i=0;i<22;i++)
{
a[i][width-1]=4;
for(j=0;j<width;j++)
{
if(a[i][j]==0) printf(" ");
if(a[i][j]==1) printf("\5");
if(a[i][j]==2) printf(".");
if(a[i][j]==3) printf("\3");
if(a[i][j]==4) printf("|");
if(i==0 && j==width-1) printf("score:%d",score);
if(i==1 && j==width-1) printf("death:%d",death);
if(i==2 && j==width-1) printf("setting:ESC");
}
printf("\n");
}
}
void movebul(int a[][N])
{
int i,j=0;
for(i=0;i<22;i++)
{
if(i==0 && a[i][j]==2)a[i][j]==0;
if(a[i][j]==2)
{
if(a[i-1][j]==3) score+=10,printf("\7");
a[i][j]=0,a[i-1][j]=2;
}
}
}
void movepla(int a[][N])
{
int i,j;
for(i=21;i>=0;i--)
for(j=0;j<width;j++)
{
if(i==21&&a[i][j]==3) a[i][j]=0;
if(a[i][j]==3)a[i][j]=0,a[i+1][j]=3;
}
if(a[20][pl]==3&&a[21][pl]==1)death++;
}
void setting(void)
{
int sw=0,i,j;

system("cls");
do
{
sw=0;
printf("\n游戏界面的大小:1.大2.小>>");
switch(getchar())
{
case'1':width=34;break;
case'2':width=24;;break;
default:printf("\n错误,请重新选择...\n");
sw=1;
}
}while(sw);
do
{
sw=0;
printf("\n请选择敌机密度:1.大2.中3.小>>");
switch(getchar())
{
case'0':density=10;break;
case'1':density=20;break;
case'2':density=30;break;
case'3':density=40;break;
default:printf("\n错误,请重新选择...\n");
sw=1;
}
}while(sw);
do
{
sw=0;
printf("\n敌机的飞行速度:1.快2.中3.慢>>");
switch(getchar())
{
case'1':speed=2;break;
case'2':speed=3;break;
case'3':speed=4;break;
default:printf("\n错误,请重新选择...\n");
sw=1;
}
}while(sw);
for(i=0;i<22;i++)
for(j=0;j<45;j++)
scr[i][j]=0;
scr[21][pl=9]=1;
printf("\n按任意键保存...");
getchar();
}
void menu(void)
{
printf("说明:按AD控制我机左右飞行,W发射子弹\n设置:请按Esc\n开始游戏:任意键");
if(getchar()==27) setting();
}
void main()
{
menu();
int i=0,j=0;
scr[21][pl]=1;
scr[0][5]=3;
while(1)
{
if(kbhit())
switch(getch())
{
case'a':
case'A':if(pl>0)
scr[21][pl]=0,scr[21][--pl]=1;break;
case'd':
case'D':if(pl<width-2)
scr[21][pl]=0,scr[21][++pl]=1;break;
case'w':
case'W':scr[20][pl]=2;break;
case 27:setting();break;
}
if(++j%density==0)
{
j=0;
srand(time(NULL));
scr[0][rand()%width]=3;
}
if(++i%speed==0) movepla(scr);
movebul(scr);
print(scr);
if(i==30000) i=0;
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言中怎么用键盘控制界面的物体移动?
printf("\\n游戏界面的大小:1.大2.小>>");switch(getchar()){ case'1':width=34;break;case'2':width=24;;break;default:printf("\\n错误,请重新选择...\\n");sw=1;} }while(sw);do { sw=0;printf("\\n请选择敌机密度:1.大2.中3.小>>");switch(getchar()){ case'0':dens...

急求C语言编程, 就是让一个运动的东西,通过我键盘按下上下左右键进行移...
C语言中,如果不是用图形模式的话,就只能控制在特定位置输出字符类.如果是用了图形模式,就可以同时输出图形以及字符(实际上所有图形或字符都是通过画点阵来构成的).键盘上输入的每一个键都有个键值(ASCII码值),通过人为检测输入的键值可以判断出输入键是什么键.如 回车键(ENTER)的值是13.同样,左右上...

C语言:在屏幕上划定一个矩形区域,用键盘方向键控制一个方块移动的方向...
key=bioskey(0);while(key!=ESC){ move(key,&x,&y,&l,&r,&u,&d);key=bioskey(0);} } void frame(int l,int r,int u,int d){ int i;for(i=l;i<r+1;i++){ gotoxy(i,u);printf("%c",219);gotoxy(i,d);printf("%c",219);} for(i=u+1;i<d+1;i++){ goto...

c语言中怎么在键盘上输入一个字符,让图形移动,不用按回车键
你定义的是char数组,gets(a)是要求全部输入的,一回车就确定你输入了~这个函数就是这样的,你输入abc按回车就是,说你复制a[0]='a',a[1]='b',a[2]='c',其他还是空~如果你要换成一个一个输的话就用for吧 将gets(a);改成 int i;for(i=0;i<20;i++)scanf("%c",&a[i])这样...

c语言 上下左右键控制一个木块的移动
int direction;\/*蛇移动方向*\/ int life;\/* 蛇的生命,0活着,1死亡*\/ }snake;void Init(void);\/*图形驱动*\/ void Close(void);\/*图形结束*\/ void DrawK(void);\/*开始画面*\/ void GameOver(void);\/*结束游戏*\/ void GamePlay(void);\/*玩游戏具体过程*\/ void PrScore(void);\/*输出成绩...

c语言怎么按方向键控制程序 ? c = getchar(); 我按了上 但是没有反应...
在C代码中可设置如下自编的intokey( )函数,用以接收方向键值。库函数kbhit( )是检测是否有按键被按下,库函数getch( )是读取键盘按键值的,不需按回车,也不回显。dir是代表方向的变量,根据不同的方向键值,让dir取1到4这四个不同的值。其它的程序段就可根据dir的值让东西朝某个方向移动。...

如何实现C语言中用键盘控制光标移动?
有相应的windows API,BOOL SetCursorPos(int X,int Y)之类的

我那程序就差最后一步了,C语言中怎么让光标随着键盘的方向键移动...
如果是控制台应用程序的话,用 SetConsoleCursorPosition()函数可以控制插入符的位置 如果是 Windows 应用程序的话,用 SetCaretPos()函数来控制插入符的位置

我用c语言编一个箭头运动的程序,我想用键盘控制箭头运动的方向,该怎么...
通过使用getch()函数接受键盘输入的字符控制移动,然后再刷屏,就这么简单 下面给一个参考程序 include<stdio.h> include<stdlib.h> include<conio.h> define N 6 int x=1, y=1;int current_value=0;int map[N][N]={ {1,1,1,1,1,1},{1,0,0,0,0,1},{1,0,0,0,0,1},{1,...

用键盘怎么控制界面
按teb选弧打印机和其他硬件回车、在按teb选择键盘或者鼠标回车、进去后teb切换选择,键盘左右控制上面选项的左右大小就可以了,希望对你有帮助!问题十:C语言中怎么用键盘控制界面的物体移动 举个例子:char ch;scanf(%c,ch);switch(ch){ case 'a':...case 'd':...} ...

相似回答