📄 initgraphics.c
字号:
/*******头文件包含*******/
#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <bios.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/************************/
/*******程序预定义*******/
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define SPACE 0x3920
#define ESC 0x011b
#define ENTER 0x1c0d
/************************/
/*******全局变量定义*******/
int z=1,sco,z1=1,x=10,y=34,i,tankdir,ts1=0,tankd;
int space[37][38]; //此空间为零的地方坦克可以通行
char str[10];
//变量z是开始欢迎界面处判断上下的标志位
//变量sco是成绩的全局变量
//变量z1是退出选单的标志位
//变量x是坦克的横向数组值
//变量y是坦克的纵向数组值
//变量i是坦克的朝向
//变量tankdir坦克的方向是否一致标志位
//数组space[38][39]是坦克活动的范围数组
//
/**************************/
/**************坦克图形***************/
//全局三维数组
int tank[4][3][3]={
{{0,1,0},
{1,1,1},
{1,0,1}},
{{1,1,0},
{0,1,1},
{1,1,0}},
{{1,0,1},
{1,1,1},
{0,1,0}},
{{0,1,1},
{1,1,0},
{0,1,1}}
};
void tankbar(int x1,int y1,int i)
{
int j=1,k,x2=x1,y2=y1;
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
if(1==tank[i][j][k])
{
setfillstyle(SOLID_FILL,RED);
bar(60+x2*10,45+y2*10,68+x2*10,53+y2*10);
x2++;
}
else
x2++;
}
x2=x1;
y2++;
}
}
void tankblack(int x1,int y1)
{
int j,k,x2=x1,y2=y1;
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
if(1==tank[i][j][k])
{
setfillstyle(SOLID_FILL,BLACK);
bar(60+x2*10,45+y2*10,68+x2*10,53+y2*10);
x2++;
}
else
x2++;
}
x2=x1;
y2++;
}
}
/*******我方坦克的虚拟数组*******/
tankspace()
{
int ii,jj;
for(ii=0;ii<3;ii++)
for(jj=0;jj<3;jj++)
space[x+jj][y+ii]=1;
}
tankbkspace(int xx,int yy)
{
int ii,jj;
for(ii=0;ii<3;ii++)
for(jj=0;jj<3;jj++)
space[xx+jj][yy+ii]=0;
}
/***********敌方坦克*************/
void tankbard(int i)
{
int j=1,k,x2=0,y2=0;
for(j=0;j<3;j++)
{
for(k=0;k<3;k++)
{
if(1==tank[i][j][k])
{
setfillstyle(SOLID_FILL,BLUE);
bar(60+x2*10,45+y2*10,68+x2*10,53+y2*10);
x2++;
}
else
x2++;
}
x2=0;
y2++;
}
}
/********敌方坦克的虚拟数组*******/
tankspaced()
{
int ii,jj;
for(ii=0;ii<3;ii++)
for(jj=0;jj<3;jj++)
space[x+jj][y+ii]=2;
}
/***********************************/
/******坦克发出的炮弹******/
void bullet(int ii)
{
int xbu,ybu,xbum,ybum;
if(0==ii)
{
xbu=x+1;
ybu=y-1;
while(space[xbu][ybu]!=space[xbu][y] && ybu>=0)
{
setfillstyle(SOLID_FILL,YELLOW);
bar(63+xbu*10,45+ybu*10,65+xbu*10,53+ybu*10);
space[xbu][ybu]=1;
delay(5000);
setfillstyle(SOLID_FILL,BLACK);
bar(63+xbu*10,45+ybu*10,65+xbu*10,53+ybu*10);
space[xbu][ybu]=0;
ybu--;
}
ybu++;
if(space[xbu][ybu]!=space[xbu][y])
{
setfillstyle(8,LIGHTRED);
bar(60+xbu*10,45+ybu*10,68+xbu*10,48+ybu*10);
delay(30000);
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
if(ybu>0)
{
ybu--;
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
space[xbu][ybu]=0;
}
}
else if(ybu>0)
{
ybu--;
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
space[xbu][ybu]=0;
}
}
if(2==ii)
{
xbu=x+1;
ybu=y+3;
while(space[xbu][ybu]!=space[xbu][y] && ybu<=37)
{
setfillstyle(SOLID_FILL,YELLOW);
bar(63+xbu*10,45+ybu*10,65+xbu*10,53+ybu*10);
space[xbu][ybu]=1;
delay(5000);
setfillstyle(SOLID_FILL,BLACK);
bar(63+xbu*10,45+ybu*10,65+xbu*10,53+ybu*10);
space[xbu][ybu]=0;
ybu++;
}
ybu--;
if(space[xbu][ybu]!=space[xbu][y])
{
setfillstyle(8,LIGHTRED);
bar(60+xbu*10,50+ybu*10,68+xbu*10,53+ybu*10);
delay(30000);
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
if(ybu<37)
{
ybu++;
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
space[xbu][ybu]=0;
}
}
else if(ybu<37)
{
ybu++;
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
space[xbu][ybu]=0;
}
}
if(3==ii)
{
xbu=x-1;
ybu=y+1;
while(space[xbu][ybu]!=space[x][ybu] && xbu>=0)
{
setfillstyle(SOLID_FILL,YELLOW);
bar(60+xbu*10,48+ybu*10,68+xbu*10,50+ybu*10);
space[xbu][ybu]=1;
delay(5000);
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,48+ybu*10,68+xbu*10,50+ybu*10);
space[xbu][ybu]=0;
xbu--;
}
xbu++;
if(space[xbu][ybu]!=space[x][ybu])
{
setfillstyle(8,LIGHTRED);
bar(60+xbu*10,45+ybu*10,63+xbu*10,53+ybu*10);
delay(30000);
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
if(xbu>0)
{
xbu--;
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
space[xbu][ybu]=0;
}
}
else if(xbu>0)
{
xbu--;
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
space[xbu][ybu]=0;
}
}
if(1==ii)
{
xbu=x+3;
ybu=y+1;
while(space[xbu][ybu]!=space[x][ybu] && xbu<=36)
{
setfillstyle(SOLID_FILL,YELLOW);
bar(60+xbu*10,48+ybu*10,68+xbu*10,50+ybu*10);
space[xbu][ybu]=1;
delay(5000);
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,48+ybu*10,68+xbu*10,50+ybu*10);
space[xbu][ybu]=0;
xbu++;
}
xbu--;
if(space[xbu][ybu]!=space[x][ybu])
{
setfillstyle(8,LIGHTRED);
bar(65+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
delay(30000);
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
if(xbu<36)
{
xbu++;
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
space[xbu][ybu]=0;
}
}
else if(xbu<36)
{
xbu++;
setfillstyle(SOLID_FILL,BLACK);
bar(60+xbu*10,45+ybu*10,68+xbu*10,53+ybu*10);
space[xbu][ybu]=0;
}
}
}
/********坦克特效*******/
//坦克出场特效
tankspec1()
{
int s;
int dingdian[18]={155,390,165,380,183,380,193,390,193,412,
188,418,160,418,155,412,155,390};
for(s=0;s<15;s++)
{
setcolor(LIGHTRED);
drawpoly(9,dingdian);
//line(155,418,193,418);
delay(10000);
setcolor(BLACK);
drawpoly(9,dingdian);
delay(10000);
}
}
/******随机数产生******/
//0~3随机产生一个数
int myrand()
{
int ii;
srand((int)time(0));
ii=0+(int)(4.0*rand()/(RAND_MAX+1.0));
return ii;
}
/******计分函数*********/
void score()
{
setcolor(BLUE);
settextjustify(RIGHT_TEXT,TOP_TEXT);
itoa(sco,str,10);
settextstyle (0,0,3);
outtextxy(580,220,str);
}
/******Are you ready*****/
void ready()
{
setcolor(LIGHTRED);
settextstyle(0,0,1);
outtextxy(460,210,"Are you ready !");
}
/******游戏随机地图*******/
/*****大本营*****/
myboss()
{
setfillstyle(2,LIGHTRED);
bar(60+15*10,45+35*10,68+15*10,53+35*10);
space[15][35]=1;
bar(60+18*10,45+35*10,68+18*10,53+35*10);
space[18][35]=1;
bar(60+21*10,45+35*10,68+21*10,53+35*10);
space[21][35]=1;
bar(60+16*10,45+36*10,68+16*10,53+36*10);
space[16][36]=1;
bar(60+17*10,45+36*10,68+17*10,53+36*10);
space[17][36]=1;
bar(60+18*10,45+36*10,68+18*10,53+36*10);
space[18][36]=1;
bar(60+19*10,45+36*10,68+19*10,53+36*10);
space[19][36]=1;
bar(60+20*10,45+36*10,68+20*10,53+36*10);
space[20][36]=1;
bar(60+17*10,45+37*10,68+17*10,53+37*10);
space[17][37]=1;
bar(60+19*10,45+37*10,68+19*10,53+37*10);
space[19][37]=1;
}
/****************/
void map()
{
//空间左上角x=60 y=45
// 右上角x=420 y=45
// 左下角x=60 y=415
// 右下角x=420 y=415
//space[37][38]
//bar(60+i*10,45+j*10,68+i*10,53+j*10);
int ii,jj;
setfillstyle(9,7);
for(ii=14;ii<=22;ii++)
{
bar(60+ii*10,45+34*10,68+ii*10,53+34*10);
space[ii][34]=1;
}
for(jj=35;jj<38;jj++)
{
bar(60+14*10,45+jj*10,68+14*10,53+jj*10);
space[14][jj]=1;
bar(60+22*10,45+jj*10,68+22*10,53+jj*10);
space[22][jj]=1;
}
for(ii=0;ii<=15;ii++)
for(jj=29;jj<=30;jj++)
{
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=21;ii<=36;ii++)
for(jj=29;jj<=30;jj++)
{
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=0;ii<=4;ii++)
for(jj=24;jj<=25;jj++)
{
setfillstyle(9,7);
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=9;ii<=30;ii++)
for(jj=24;jj<=25;jj++)
{
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=12;ii<=15;ii++)
for(jj=8;jj<=19;jj++)
{
setfillstyle(9,7);
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=22;ii<=25;ii++)
for(jj=8;jj<=19;jj++)
{
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=16;ii<=21;ii++)
for(jj=12;jj<=15;jj++)
{
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=4;ii<=7;ii++)
for(jj=6;jj<=14;jj++)
{
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=0;ii<=7;ii++)
for(jj=15;jj<=17;jj++)
{
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=30;ii<=36;ii++)
for(jj=4;jj<=6;jj++)
{
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=30;ii<=32;ii++)
for(jj=7;jj<=19;jj++)
{
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
for(ii=17;ii<=20;ii++)
for(jj=0;jj<=3;jj++)
{
bar(60+ii*10,45+jj*10,68+ii*10,53+jj*10);
space[ii][jj]=1;
}
ready();
myboss();
}
/***********************/
/******退出表单*********/
void escchange()
{
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(240,150,410,240);
setfillstyle(SOLID_FILL,BLUE);
bar(242,152,408,168);
setcolor(0);
rectangle(260,190,310,210);
rectangle(338,190,390,210);
settextstyle(1,0,1);
setcolor(15);
settextjustify(LEFT_TEXT,TOP_TEXT);
outtextxy(246,157,"B-Trix");
settextjustify(LEFT_TEXT,CENTER_TEXT);
outtextxy(278,201,"OK");
setcolor(0);
outtextxy(342,201,"Cancel");
}
/*************************/
/******游戏开始图********/
void begin()
{
int ii,jj;
setcolor(BLUE);
setlinestyle(0,0,1);
rectangle(40,25,595,445);
setlinestyle(0,0,2);
rectangle(35,20,600,450);
setlinestyle(0,0,1);
line(450,25,450,445);
setfillstyle(1,7);
for(ii=50;ii<=430;ii+=8) //外边框横行排列
{
bar(ii,35,ii+8,43);
bar(ii,425,ii+8,433);
ii+=2;
}
for(jj=45;jj<=420;jj+=8) //外边框纵行排列
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -