C语言 做一个按方向键分别加减数的程序

作者&投稿:殷媛 (若有异议请与网页底部的电邮联系)
C语言:在屏幕上划定一个矩形区域,用键盘方向键控制一个方块移动的方向,类似于贪食蛇,但比贪食蛇?F~

#include
#include
#include
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define ESC 0x11b
void main()
{
int l=15,r=35,u=10,d=18,x,y,key;
void frame(int,int,int,int);
void move(int,int *,int *,int *,int *,int *,int *);
clrscr();
x=(l+r)/2;
y=(u+d)/2;
textcolor(YELLOW);
frame(l,r,u,d);
gotoxy(x,y);
cprintf("%c",1);
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++)
{
gotoxy(l,i);
printf("%c",219);
gotoxy(r,i);
printf("%c",219);
}
}

void move(int key,int *x,int *y,int *l,int *r,int *u,int *d)
{
gotoxy(*x,*y);
putchar(32);
if(key==UP)
{
if(*y==*u+1)*y=*d-1;
else (*y)--;
}
if(key==DOWN)
{
if(*y==*d-1)*y=*u+1;
else (*y)++;
}
if(key==LEFT)
{
if(*x==*l+1)*x=*r-1;
else (*x)--;
}
if(key==RIGHT)
{
if(*x==*r-1)*x=*l+1;
else (*x)++;
}
gotoxy(*x,*y);
putchar(1);
}

回复:这个程序是在tc2.0上运行成功的,是c程序,根据错误提示,你是把它作为c++来运行的。
补充:在保存文件时扩展名改为.c

这个可以用定时器来做,比如检查某键,按键时间超过2秒后一个变量开始累加知道键释放为止。实现方法如下:
#include
#define uint unsigned int
#define uchar unsigned char
uint v=0,time=0;
sbit key=P1^0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if((key==0)&&(time>40)v++; //如果按键时间超过2秒且键未释放,变量+1
if(key==1)time=0; //如果键释放,时间复位
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}

#include <windows.h>
void GoToXY(int x, int y)
{
COORD pos = {x,y};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut, pos);
}
int main()
{
char a;
int m = 0;;
while (a = getch())
{
int d = m;
switch(a)
{
case 72: if (m < 999)m += 1;break;
case 80: if (m > 0  )m -= 1;break;
case 75: if (m >= 10)m -= 10;break;
case 77: if (m <=989)m += 10;break;
}
if (d != m)
{
GoToXY(0,0);
printf("%3d", m);
}
}
return 0;
}


cnt没有初始化,定义的地方要写
int cnt=0, num = 999;
另外, cnt - 10; 要写成 cnt -= 10;
cnt + 10; 要写成 cnt += 10;

不会按键响应吗?


乌鲁木齐市13320895496: C语言 做一个按方向键分别加减数的程序 -
鱼舒异山: 展开全部#include void GoToXY(int x, int y) { COORD pos = {x,y}; HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hOut, pos); } int main() { char a; int m = 0;; while (a = getch()) { int d = m; switch(a) { case 72: if ...

乌鲁木齐市13320895496: C语言设计一个加减计数器,通过两个按键来控制.就是按一个键就加一,按另外一个就减一.求大神帮忙设计 -
鱼舒异山: 如果是windows上程序.单词按键判断ASCII码,然后变量值++,--就可以了.#include <stdio.h>#include <conio.h>#include <windows.h>#define KEYA 61//按键盘'+'键(非小键盘)#define KEYM 45//按键盘'-'键(非小键盘) int main() { int key,...

乌鲁木齐市13320895496: 单片机AT89C51用C语言编,两个按钮分别控制一个数码管加减数,最好用中 -
鱼舒异山: #include<reg51.h>#define uchar unsigned char uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f uchar dat; void ext0() interrupt 0 { dat++; dat%=10; P1=distab[dat]; } ext1() interrupt 2 ...

乌鲁木齐市13320895496: 用c语言编写一个计数器(单片机为51型,数码管为共阴)要求有三个按键分别控制停止、加、减 -
鱼舒异山: 一看到你说是计数器,又看到你要求有停止功能,意思是把Timer改为计数器,然后可以通过一个键停止计数对吧?如果这样的话挺简单的,51单片机的计数器io口记得好像是P3^0和P3^1,但不管怎么,首先设置TMOD,将C/T位置1,这就改为计数器了,然后可以编写函数来对一个变量进行加减;同样利用51单片机的外部中断也可以实现计数功能,打开外部中断开关,在外部中断服务函数对计数变量进行加减;最简单的,直接利用io口高低电平变化来进行计数,编写if函数,只要某个io口电平变化了,就对计数变量进行加减.如果你对这个有点陌生,那么回复我一起讨论或者我可以帮你写程序.希望我的回答能帮助到你.

乌鲁木齐市13320895496: 求两个按键控制数码管数字加减C语言程序 -
鱼舒异山: void main (void) { unsigned char num=0; KEY_ADD=1; //按键输入端口电平置高 KEY_DEC=1; while (1) //主循环{ if(!KEY_ADD) //如果检测到低电平,说明按键按下{ DelayMs(10); //延时去抖,一般10-20msif(!KEY_ADD) //再次确认按键...

乌鲁木齐市13320895496: 用C语言做一个简单的两位数加减乘除 -
鱼舒异山: int x,y,z;char c;printf("请输入第一位数:\n"); scanf("%d",&x);printf("请输入运算符:\n"); scanf("%c",&c);printf("请输入第二位数:\n"); scanf("%d",&y);switch (c){case '+':z=x+y;break;case '-':z=x-y;break;case '*':z=x*y;break;case '/':if(y==0)print("被除数不能是0!");else z=x/y;} printf("%d%c%d=%d\n",x,c,y,z);

乌鲁木齐市13320895496: 用c语言做一个加减乘除还有乘方的计算器,做出来界面要好看好看好看.一定要c语言c++. -
鱼舒异山: 给你个程序:刚写的,我也是初学者,只可以计算小数,括号和四种基本运算,单不能乘方,我用的是VC++6.0:代码如下: #include "stdio.h" #include "string.h" #include "math.h"const int N=30;//定义数组长度,可以修改更大;计算...

乌鲁木齐市13320895496: c语言中,输出一个数字,比如10,在键盘上按加号,10就加一变为11,再按又加一,这样的程序怎么写 -
鱼舒异山: 楼上回答的都好专业,我也来写个吧 #include<stdio.h> #include<conio.h> #include<windows.h> int main() { int n; char c; scanf("%d",&n); while(c=getch()) { switch(c) { case '+': { system("cls"); printf("%d",++n); } break; case '-': { system("cls...

乌鲁木齐市13320895496: 求用C语言编写一简单计算器程序,要求:实现简单地加减乘除就行了 -
鱼舒异山: void main() { float a,b;char c; printf("Please enter your math;"); scanf("%d%c%d",&a,&c,&b); switch(c) {case'+':printf("a+b=%f\n",a+b);break; case'-':printf("a-b=%f\n",a-b);break; case'*':printf("a*b=%f\n",a*b);break; case'/':{if(b!=0) printf(...

乌鲁木齐市13320895496: 用C语言指针写一个两个数比较大小,相加减,输出最大,最小,两个数的和 -
鱼舒异山: #include "stdio.h" void main() { int *p,*q;int m,n;p=&m,q=&n;printf("请输入数据:");scanf("%d%d",&m,&n);printf("和:%d\n",*p-*q);printf("差:%d\n",*p+*q);printf("大:%d\n",*p>*q?*p:*q);printf("小:%d\n",*p }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网