用bioskey()函数可以实现读取键盘的上下左右键
函数原型:int bioskey (int cmd)
说 明:bioskey()的函数原型在bios.h中,即必须包含头文件#include<bios.h>
读取方向键可以用下面的程序啊!
#include<stdio.h>#include<bios.h>
#define Key_Up 0x4800 // 向上方向键
#define Key_Down 0x5000 // 向下方向键
#define Key_Right 0x4d00 // 向右方向键
#define Key_Left 0x4b00 // 向左方向键
void main()
{
int key=bioskey(0)
switch(key)
{
case Key_Up : {printf(" 向上方向键被按下") break}
case Key_Down : {printf(" 向下方向键被按下") break}
case Key_Left : {printf(" 向左方向键被按下") break}
case Key_Right : {printf(" 向右方向键被按下") break}
}
}
// 就是类似打飞机的程序呗,直接复制以下源码在VC6.0 中编译通过!#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=0i<22i++)
{
a[i][width-1]=4
for(j=0j<widthj++)
{
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=0i<22i++)
{
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=21i>=0i--)
for(j=0j<widthj++)
{
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=34break
case'2':width=24break
default:printf("\n错误,请重新选择...\n")
sw=1
}
}while(sw)
do
{
sw=0
printf("\n请选择敌机密度:1.大2.中3.小>>")
switch(getchar())
{
case'0':density=10break
case'1':density=20break
case'2':density=30break
case'3':density=40break
default:printf("\n错误,请重新选择...\n")
sw=1
}
}while(sw)
do
{
sw=0
printf("\n敌机的飞行速度:1.快2.中3.慢>>")
switch(getchar())
{
case'1':speed=2break
case'2':speed=3break
case'3':speed=4break
default:printf("\n错误,请重新选择...\n")
sw=1
}
}while(sw)
for(i=0i<22i++)
for(j=0j<45j++)
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]=1break
case'd':
case'D':if(pl<width-2)
scr[21][pl]=0,scr[21][++pl]=1break
case'w':
case'W':scr[20][pl]=2break
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
}
}