/*简单潜艇大战
全局变量speed一开始需要调整,大家的速度不同
主要练习下这个游戏的基本算法,用简单的图形来模拟
----跳蚤侦探-------
*/
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#include <graphics.h>
#define KEY_ESC 0x01
#define KEY_SPACE 0x39
#define KEY_LEFT 0x4b
#define KEY_RIGHT 0x4d
int speed=10000;
char key_state[128],key_pressed[128];/*键盘操作用的变量*/
int score=0;/*得分*/
char scorestr[10];/*输出分数的变量*/
strUCt Fire/*子弹的结构体*/
{
int x;
int y;
int start;/*是否发射炮弹*/
}amyfire[6];/*屏幕上最多有5个敌人可以发子弹*/
struct Play/*玩家的结构体*/
{
int x;
int y;
struct Fire fire[6];
life;
}play;
struct Amy/*敌人的结构体*/
{
int x;
int y;
int speed;/*敌人的速度*/
int color;
int direction;
life;
}amy[6];
void InitGraph(void);/*图形初始化*/
void CloseGraph(void);/*图形结束*/
void GamePlay(void);/*具体玩游戏*/
void DrawPlay(void);/*画玩家*/
void DrawAmy(int i);/*画敌人*/
void DrawFire(int x,int y,int n);/*画子弹,0去除,1显示*/
void DrawAmyFire(int x,int y,int n);/*画子弹,0去除,1显示*/
void DrawBlack(int x,int y,int color);/*去除原来地方的物体*/
void PrScore();/*输出得分*/
int GetKey(int ScanCode);/*这里开始都是按键函数*/
void interrupt far (*OldInt9Handler)();
void far interrupt NewInt9();
void InstallKeyboard();
void ShutDownKeyboard();
void main(void)
{
InitGraph();/*图形初始化*/
GamePlay();/*具体玩游戏*/
CloseGraph();/*图形结束*/
}
void InitGraph(void)/*图形初始化*/
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
InstallKeyboard();
}
void DrawPlay(void)/*画玩家*/
{
setfillstyle(SOLID_FILL,6);
bar(play.x-20,play.y-10,play.x+20,play.y);
setfillstyle(SOLID_FILL,4);
bar(play.x-20,play.y-10,play.x-10,play.y);
}
void DrawAmy(int i)/*画敌人*/
{
setfillstyle(SOLID_FILL,amy[i].color);
bar(amy[i].x-20,amy[i].y-10,amy[i].x+20,amy[i].y);
setfillstyle(SOLID_FILL,GREEN);
if(amy[i].direction==1)
bar(amy[i].x-20,amy[i].y-10,amy[i].x-10,amy[i].y);
else
bar(amy[i].x+10,amy[i].y-10,amy[i].x+20,amy[i].y);
}
void DrawBlack(int x,int y,int color)/*去除原来地方的物体*/
{
setfillstyle(SOLID_FILL,color);
bar(x-20,y-10,x+20,y);
}
void DrawFire(int x,int y,int n)/*画子弹,0去除,1显示*/
{
if(n==0)
setfillstyle(SOLID_FILL,BLUE);
else
setfillstyle(SOLID_FILL,0);
setcolor(BLUE);
fillellipse(x,y,5,5);
}
void DrawAmyFire(int x,int y,int n)/*画子弹,0去除,1显示*/
{
if(n==0)
setfillstyle(SOLID_FILL,BLUE);
else
setfillstyle(SOLID_FILL,YELLOW);/*敌人的炮弹是黄的*/
setcolor(BLUE);
fillellipse(x,y,3,3);
}