void intokey()
{
if (GetAsyncKeyState(VK_UP) &&0x8000)
{ if (direction == DOWN) { } else {direction = UP} }
if (GetAsyncKeyState(VK_DOWN) &&0x8000)
{ if (direction == UP) { } else {direction = DOWN} }
if (GetAsyncKeyState(VK_RIGHT) &&0x8000)
{ if (direction == LEFT) { } else {direction = RIGHT} }
if (GetAsyncKeyState(VK_LEFT) &&0x8000)
{ if (direction == RIGHT) { } else {direction = LEFT} }
if (GetAsyncKeyState(VK_RETURN) &&0x0D)
{ while (1)
{ if (GetAsyncKeyState(VK_RETURN) &&0x0D) { break} }
}
}
在你的基础上改的#include<stdio.h>
#include<stdlib.h>
#define LISTSIZE 100
#define ADD 10
typedef struct {
int *elem
int length
int listsize
}List//定义线性表的结构体
void SqList(List &L)
{
//int i//C++中C程序的变量定义放在开始
L.elem=(int *)malloc(LISTSIZE*sizeof(int))
if(!L.elem) exit(0)
L.listsize=LISTSIZE
//printf("请输入线性表长度:")
//scanf("%d",&L.length)
//printf("为线性表赋值:")
//for(i=0i<=L.length-1i++)
//scanf("%5d",&L.elem[i])
L.length =0//如果是初始化,那么长度就是0
}//初始化线性表
int InsertSq(List &L,int i,int e)
{
int *p=NULL, *q=NULL//所有变量的定义都必须置前
if(i<0||i>L.length+1) return 0
if(L.length>=L.listsize)
{
int *newbase
newbase=(int *)realloc(L.elem,(L.listsize+ADD)*sizeof(int))
if(!newbase) exit(0)
L.elem=newbase
L.listsize+=ADD
}
q=&L.elem[i-1]
for(p=&L.elem[L.length-1]p>=q--p)
*(p+1)=*p
*q=e
L.length++
return 1
}//在线性表的第i个元素之前插入元素e
void PrintList(List L)
{
printf("顺序表中的元素:\n")
for(int k=0k<=L.length-1k++)
printf("%5d",L.elem[k])
printf("\n"颂桥)
}
void main()
{
//void SqList(List &L)
//int InsertSq(List &L,int i,int e)使用之前已经定义了,可以不用函数说明
List L
int i,e//函数调用前,变量必须定义
SqList(L)
printf("输入顺序表野中猛中元素的个培滚数:")
scanf("%d",&i)
printf("请输入元素:")
for(int j=1j<=ij++)
{
scanf("%d",&e)
InsertSq(L,j,e)
}
PrintList(L)
printf("输入插入的元素及其位置:")
scanf("%5d%5d",&e,&i)
InsertSq(L,i,e)
PrintList(L)
}
在用C语言写出的“贪吃蛇”小游戏中,可以自编以下这个intokey( )函数,用来获取方向键值以便控制蛇的拐弯。库函数kbhit( )是检测是否有按键被按下,Dir是代表方向的变量,整型变量flag用来获取键值厅喊,1、2、3、4分别表示方向的上下左右。要#include<conio.h>.
void intokey( )
{ int flag
if ( kbhit( ) ) //判断有键按下时才执行下面 *** 作
{ flag = getch( ) //用flag来获橡伏码取键值
if (flag==224) flag = getch( )//值为224是方向键,要再次获取才行
if (flag==72 &&dir != 2) dir = 1//方向键为“上”且原方向不为下时,让dir=1.
if (flag==80 &&dir != 1) dir = 2//方向键为“下”且原方向不为上时,让dir=2.
if (flag==75 &&dir != 4) dir = 3//方梁哪向键为“左”且原方向不为右时,让dir=3.
if (flag==77 &&dir != 3) dir = 4//方向键为“右”且原方向不为左时,让dir=4.
}
}
注:上下左右键按下后都会产生2个值,第一个是224,第二个才分别是72、80、75和
77.所以要用库函数getch( )两次获取键值。如果是ASDW来控制拐弯,flag可以定义为
字符型,获取一次键值即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)