# include

# include "13h.h"  /*显示中断*/

# include

# include

# include "timer.h"

# include

# include

struct stBOMB /*鱼雷结构*/

{

int  x;              /*鱼雷X轴坐标*/

int  y;              /*鱼雷Y轴坐标*/

BOOL Used;           /* BOOL宏定义在13H.H中,标志鱼雷是否被引爆: */

/*TRUE表示未引爆,可以使用,FALSE表示已引爆,不能使用*/

};

struct stEXPL /*爆炸动画结构*/

{

int  x;              /*爆炸动画X轴坐标*/

int  y;              /*爆炸动画Y轴坐标*/

BYTE Num;            /* BOOL宏定义在13H.H中,播放爆炸现场的当前帧数*/

BOOL Used;           /*标志爆炸是否被播放*/

};

struct stSHIP /*潜艇结构*/

{

int  x;              /*潜艇X轴坐标*/

int  y;              /*潜艇Y轴坐标*/

BOOL Used;           /*标志潜艇是否被引爆*/

BYTE Dir;

BYTE Type;

};

struct stTORP /*水雷结构*/

{

int  x;                /*水雷X轴坐标*/

int  y;                /*水雷Y轴坐标*/

BOOL Used;             /*标志水雷是否被引爆*/

};

struct stBOMB bbBomb[21];

struct stSHIP spShip[21];

struct stTORP tpTorp[21];

struct stEXPL elExpl[21];

int BombUsed=0;

int ShipUsed=0;

int TorpUsed=0;

int ExplUsed=0;

int MAXBOMB=5; /*最多鱼雷数目*/

int MAXSHIP=3; /*最多潜艇数目*/

int MAXTORP=5; /*最多水雷数目*/

int MAXEXPL=5; /*最多爆炸数目*/

int ID_Timer[MAXTIMER+1];

int ID_Bomb[21];

int ID_Ship[21];

int ID_Torp[21];

int ID_Expl[21];

BOOL DISP=TRUE;

BOOL CLS=FALSE;

BOOL bPaint=FALSE;

BOOL ALIVE=TRUE;

BOOL SOUND=TRUE;

BOOL Flash=FALSE;

BOOL DONE=FALSE;

BYTE SHIP[2][32][64];

BYTE BOMB[32][32];

BYTE TORP[16][16];

BYTE PAL[256][3];

BYTE STR[80];

BYTE far * PIC_EXPL;

BYTE far * PIC_SHIP;

void far * Back1;

void far * Back2;

int  MyX=0;

int  MyY=0;

int  Life=3;

int  Score=25;

int  LevelScore=25;

int  Level=0;

int  Step=0;

char *Info="/

/

/

Welcome to play this game!/

/n/

/n/

/n/

In this game,you will drive a warship to fight with/n/

the submarines./n/n/

KEYS:/n/

'Left' and 'Right' keys to move your warship./n/

'Space bar' or 'Ctrl' key to send bombs./n/

'S' key is a sound switch./n/

'D' key is a state switch./n/n/

/n/

/n/n/

GOOD LUCK!/0";

/* 调色板渐入 */

void StepIn()

{

int i;

for (i=0;i<256;i++)

/*设置调色板 */

setpal(i,PAL[i][0]*Step/64,PAL[i][1]*Step/64,PAL[i][2]*Step/64);

Step++;

if (Step>64) KillAllTimer();/* 删除所有时钟 */

}

/* 调色板渐出 */

void StepOut()

{

int i;

for (i=0;i<256;i++)

/*设置调色板 */

setpal(i,PAL[i][0]*Step/64,PAL[i][1]*Step/64,PAL[i][2]*Step/64);

Step--;

if (Step<1) KillAllTimer();/* 删除所有时钟 */

}

/*输出信息*/

void OutInfo()

{

if (*Info++)

{

sound(1000);

printf("%c",*(Info-1));

nosound();

}

else

KillAllTimer();

}

/* 显示开始画面 */

void Logo()

{

FILE *bmp;

int  i,r,g,b,x,y;

setmode();

bmp=fopen("logo.bmp","rb");/*打开位图文件*/

fseek(bmp,54,SEEK_SET);    /*打开调色板段*/

for (i=0;i<256;i++)

{

PAL[i][2]=fgetc(bmp)>>2;

PAL[i][1]=fgetc(bmp)>>2;

PAL[i][0]=fgetc(bmp)>>2;

fgetc(bmp);

setpal(i,0,0,0);

}

for (y=0;y<200;y++)  /*向屏幕描点*/

for (x=0;x<320;x++) pokeb(0xa000,y*320+x,fgetc(bmp));

fclose(bmp);

CreateTimer(1,StepIn);  /*建立时钟*/

while (ScanKey()!=57&&TimerUsed) TimerEvent(); /*等待键盘输入*/

Step=64;

StepIn(); /*渐入图片*/

wait();

CreateTimer(1,StepOut);

while (ScanKey()!=57&&TimerUsed) TimerEvent();

Step=0;

StepOut();/*渐出图片*/

closemode();

CreateTimer(2,OutInfo);

locate(6,26);

while (ScanKey()!=57&&TimerUsed) TimerEvent();

while (*Info++) printf("%c",*(Info-1));

wait();

}

void KillSelf() /*如果中弹,减少生命值,直到毁灭*/

{

if (SOUND)

{

sound(1000);

delay(1000);

nosound();

}

Life--;

if (Life<0) ALIVE=FALSE;

}

/* 设置系统所有调色板 */

void SetAllPal()

{

FILE *act;

int  i,r,g,b;

act=fopen("comm.act","rb");

for (i=0;i<256;i++)

{

r=fgetc(act)>>2;

g=fgetc(act)>>2;

b=fgetc(act)>>2;

setpal(i,r,g,b);

}

fclose(act);

}

/* 从位图中读出军舰的形状 */

void readboat()

{

FILE *bmp;

int  x,y;

bmp=fopen("boat.bmp","rb");

fseek(bmp,1078,SEEK_SET);

for (y=0;y<32;y++)

{

for (x=0;x<64;x++) SHIP[0][31-y][x]=fgetc(bmp);

for (x=0;x<64;x++) SHIP[1][31-y][x]=fgetc(bmp);

}

fclose(bmp);

}

/* 从位图中读出鱼雷的形状 */

void readbomb()

{

FILE *bmp;

int  x,y;

bmp=fopen("bomb.bmp","rb");

fseek(bmp,516,SEEK_SET);

for (y=0;y<32;y++)

for (x=0;x<32;x++) BOMB[31-y][x]=fgetc(bmp);

fclose(bmp);

}

/* 从位图中读出水雷的形状 */

void readtorp()

{

FILE *bmp;

int  x,y;

bmp=fopen("torp.bmp","rb");

fseek(bmp,516,SEEK_SET);

for (y=0;y<16;y++)

for (x=0;x<16;x++) TORP[15-y][x]=fgetc(bmp);

fclose(bmp);

}

/* 从位图中读出潜艇的形状 */

void readship()

{

FILE *bmp;

long i;

PIC_SHIP=Back2;

bmp=fopen("ship.bmp","rb");

fseek(bmp,1078,SEEK_SET);

for (i=0;i<10080;i++)

*PIC_SHIP++=fgetc(bmp);

fclose(bmp);

}

/* 从位图中读出爆炸的形状 */

void readexpl()

{

FILE *bmp;

long i;

PIC_EXPL=Back1;

bmp=fopen("expl.bmp","rb");

fseek(bmp,1078,SEEK_SET);

for (i=0;i<59520;i++)

*PIC_EXPL++=fgetc(bmp);

fclose(bmp);

}

/*移动鱼雷*/

void bomb(int xx,int yy)

{

int y,x;

for (y=0;y<32;y++)

for (x=0;x<32;x++)

if (BOMB[y][x]) Pset(x+xx,y+yy,BOMB[y][x]);

}

/*移动潜艇*/

void boat(int xx,int yy,int num)

{

int y,x;

for (y=0;y<32;y++)

for (x=0;x<64;x++)

if (SHIP[num][y][x]) Pset(x+xx,y+yy,SHIP[num][y][x]);

}

/*移动水雷*/

void torp(int xx,int yy)

{

int y,x;

for (y=0;y<16;y++)

for (x=0;x<16;x++)

if (TORP[y][x]) Pset(x+xx,y+yy,TORP[y][x]);

}

/*移动潜艇*/

void ship(int xx,int yy,BYTE Type,BYTE Dir)

{

int x,y;

bPaint=TRUE;

PIC_SHIP=Back2;

PIC_SHIP+=(long)(Type*2+Dir)*63l;

for (y=0;y<20;y++)

{

for (x=0;x<63;x++)

if (*PIC_SHIP++) Pset(x+xx,19-y+yy,*(PIC_SHIP-1));

PIC_SHIP+=441l;

}

}

/* 物体系统*/

/*创建各个物体*/

int CreateTorp(int x,int y)

{

int i=0;

if (TorpUsed==MAXTORP) return NULL;

while (tpTorp[++i].Used);

tpTorp[i].x=x;

tpTorp[i].y=y;

tpTorp[i].Used=TRUE;

TorpUsed++;

return i;

}

/*删除各个物体*/

void KillTorp(int *TorpID)

{

if (tpTorp[*TorpID].Used)

{

TorpUsed--;

tpTorp[*TorpID].Used=FALSE;

}

*TorpID=NULL;

}

/*下面开始不再注释,太累了,谁有时间可以帮忙注释一下*/

void DrawTorp()

{

int i=0;

int ID;

while (!tpTorp[++i].Used);

if (i==MAXTORP+1) return;

bPaint=TRUE;

if (!CLS)

{

ClearScreen(2);

CLS=TRUE;

}

for (i=1;i<=MAXTORP;i++)

{

if (tpTorp[i].Used)

{

if (tpTorp[i].y<34)

{

KillTorp(&ID_Torp[i]);

/* 我方船只被炸 */

if (tpTorp[i].x-MyX>10&&tpTorp[i].x-MyX<50)

{

ID=CreateExpl(tpTorp[i].x-23,tpTorp[i].y-26);

if (ID) ID_Expl[ID]=ID;

KillSelf();

}

}

torp(tpTorp[i].x,tpTorp[i].y);

tpTorp[i].y--;

}

}

}

int CreateShip(int y,BYTE Type)

{

int i=0;

if (ShipUsed==MAXSHIP) return NULL;

while (spShip[++i].Used);

spShip[i].y=y;

spShip[i].Used=TRUE;

spShip[i].Dir=random(2);

spShip[i].Type=Type;

spShip[i].x=-64;

if (!spShip[i].Dir) spShip[i].x=320;

ShipUsed++;

return i;

}

void KillShip(int *ShipID)

{

if (spShip[*ShipID].Used)

{

ShipUsed--;

spShip[*ShipID].Used=FALSE;

}

*ShipID=NULL;

}

void DrawShip()

{

int i=0;

int ID;

while (!spShip[++i].Used);

if (i==MAXSHIP+1) return;

bPaint=TRUE;

if (!CLS)

{

ClearScreen(2);

CLS=TRUE;

}

for (i=1;i<=MAXSHIP;i++)

{

if (spShip[i].Used)

{

if (random(10)==3)

{

ID=CreateTorp(spShip[i].x+32,spShip[i].y);

if (ID) ID_Torp[ID]=ID;

}

ship(spShip[i].x,spShip[i].y,spShip[i].Type,spShip[i].Dir);

if (spShip[i].Dir)

{

spShip[i].x+=2;

if (spShip[i].x>320) KillShip(&ID_Ship[i]);

}

else

{

spShip[i].x-=2;

if (spShip[i].x

}

}

}

}

int CreateExpl(int x,int y)

{

int i=0;

if (ExplUsed==MAXEXPL) return NULL;

while (elExpl[++i].Used);

elExpl[i].x=x;

elExpl[i].y=y;

elExpl[i].Used=TRUE;

elExpl[i].Num=0;

ExplUsed++;

return i;

}

void KillExpl(int *ExplID)

{

if (elExpl[*ExplID].Used)

{

ExplUsed--;

elExpl[*ExplID].Used=FALSE;

elExpl[*ExplID].Num=0;

}

*ExplID=NULL;

}

void DrawExpl()

{

int  x,y,i=0;

while (!elExpl[++i].Used);

if (i==MAXEXPL+1) return;

bPaint=TRUE;

if (!CLS)

{

ClearScreen(2);

CLS=TRUE;

}

for (i=1;i<=MAXEXPL;i++)

{

if (elExpl[i].Num==15) KillExpl(&ID_Expl[i]);

if (elExpl[i].Used)

{

bPaint=TRUE;

PIC_EXPL=Back1;

PIC_EXPL+=(long)elExpl[i].Num*62l;

elExpl[i].Num++;

for (y=0;y<64;y++)

{

if (SOUND) sound(random(2000)+500);

for (x=0;x<62;x++)

if (*PIC_EXPL++) Pset(x+elExpl[i].x,(63-y)+elExpl[i].y,*(PIC_EXPL-1));

PIC_EXPL+=870l;

}

nosound();

}

}

}

int CreateBomb(int x,int y)

{

int i=0;

if (BombUsed==MAXBOMB) return NULL;

while (bbBomb[++i].Used);

bbBomb[i].x=x;

bbBomb[i].y=y;

bbBomb[i].Used=TRUE;

BombUsed++;

return i;

}

void KillBomb(int *BombID)

{

if (bbBomb[*BombID].Used)

{

BombUsed--;

bbBomb[*BombID].Used=FALSE;

}

*BombID=NULL;

}

void DrawBomb()

{

int i=0,j;

int ID;

while (!bbBomb[++i].Used);

if (i==MAXBOMB+1) return;

bPaint=TRUE;

if (!CLS)

{

ClearScreen(2);

CLS=TRUE;

}

for (i=1;i<=MAXBOMB;i++)

{

if (bbBomb[i].Used)

{

for (j=1;j<=MAXSHIP;j++)

{

if (spShip[j].Used&&

abs(spShip[j].y-bbBomb[i].y)<16&&

abs(spShip[j].x-bbBomb[i].x+16)<32)

{

switch (spShip[j].Type)

{

case 0:

Score+=10;

LevelScore+=10;

break;

case 1:

Score+=20;

LevelScore+=20;

break;

case 2:

Score+=40;

LevelScore+=40;

break;

case 3:

Life++;

break;

}

KillShip(&ID_Ship[j]);

KillBomb(&ID_Bomb[i]);

ID=CreateExpl(bbBomb[i].x-20,bbBomb[i].y);

if (ID) ID_Expl[ID]=ID;

}

}

bomb(bbBomb[i].x,bbBomb[i].y);

bbBomb[i].y+=2;

if (bbBomb[i].y>170) KillBomb(&ID_Bomb[i]);

}

}

}

void DrawObject()

{

CLS=FALSE;

DrawBomb();

DrawShip();

DrawTorp();

if (!bPaint) return;

if (!CLS) ClearScreen(2);

boat(MyX,2,Flash);

DrawExpl();

if (DISP)

{

OutString(0,0,"LIFE:",96);

itoa(Life+1,STR,10);

OutString(5,0,STR,96);

if (SOUND) OutString(7,0,"Sound",2);

itoa(MAXBOMB-BombUsed,STR,10);

OutString(13,0,"BOMB:",89);

OutString(18,0,STR,89);

itoa(Level+1,STR,10);

OutString(21,0,"LEVEL:",13);

OutString(27,0,STR,13);

OutString(30,0,"SCORE:",52);

itoa(Score,STR,10);

OutString(36,0,STR,52);

}

ReFresh();

}

void InitGame()

{

int i;

BombUsed=0;

ShipUsed=0;

TorpUsed=0;

ExplUsed=0;

for (i=1;i<=MAXSHIP;i++) KillShip(&ID_Ship[i]);

for (i=1;i<=MAXBOMB;i++) KillBomb(&ID_Bomb[i]);

for (i=1;i<=MAXTORP;i++) KillTorp(&ID_Torp[i]);

for (i=1;i<=MAXEXPL;i++) KillExpl(&ID_Expl[i]);

Flash=FALSE;

ALIVE=TRUE;

DONE=FALSE;

MyX=0;

MyY=0;

Life=3;

Score=25;

LevelScore=25;

Level=0;

}

void GameMain()

{

BYTE   bKey;

int    ShipType;

int    i,ID;

bKey=ScanKey();

while (bKey!=1&&ALIVE)

{

TimerEvent();

if (Life==0)

Flash=!Flash;

else

Flash=FALSE;

if (random(10)==4)

{

i=random(100);

if (i<50)

ShipType=0;

else if (i>=50&&i<75)

ShipType=1;

else if (i>=75&&i<95)

ShipType=2;

else if (i>95)

ShipType=3;

ID=CreateShip(random(6)*20+70,ShipType);

if (ID) ID_Ship[ID]=ID;

}

switch (bKey)

{

case 115:

case 75:

bPaint=TRUE;

MyX-=4;

if (MyX<0) MyX=0;

break;

case 2:

Life++;

break;

case 3:

MAXBOMB++;

if (MAXBOMB>20) MAXBOMB=20;

case 77:

case 116:

bPaint=TRUE;

MyX+=4;

if (MyX>256) MyX=256;

break;

case 31:

SOUND=!SOUND;

break;

case 32:

DISP=!DISP;

break;

case 57:

if (LevelScore==0) break;

ID=CreateBomb(MyX+20,32);

if (ID)

{

Score-=5;

LevelScore-=5;

ID_Bomb[ID]=ID;

}

}

bKey=ScanKey();

if (LevelScore>=500)

{

Level++;

LevelScore=0;

if (Level<15)

OutString(15,10,"Next Level!",13);

else

{

OutString(14,10,"Very Good!!",13);

DONE=TRUE;

bKey=1;

}

ReFresh();

wait();

}

MAXSHIP=Level+3;

MAXTORP=Level+5;

MAXEXPL=Level+5;

}

}

void main()

{

BOOL QUIT=FALSE;

int  nKey;

Video=farmalloc(64000);

if (Video==NULL)

{

printf("Not enough Memory/n");

exit(0);

}

Back1=farmalloc(59520);

if (Back1==NULL)

{

printf("Not enough Memory/n");

farfree(Video);

exit(0);

}

Back2=farmalloc(10080);

if (Back2==NULL)

{

printf("Not enough Memory/n");

farfree(Back2);

farfree(Video);

exit(0);

}

randomize();

Logo();

setmode();

SetAllPal();

readboat();

readship();

readexpl();

readbomb();

readtorp();

ClearScreen(2);

boat(0,2,0);

KillAllTimer();

CreateTimer(1,DrawObject);

ReFresh();

while (!QUIT)

{

GameMain();

bPaint=TRUE;

if (!ALIVE)

OutString(15,10,"GAME OVER",96);

OutString(14,12,"QUIT? (Y/N)",89);

ReFresh();

nKey=getch();

while (!(nKey=='Y'||nKey=='y'||nKey=='N'||nKey=='n'))

{

nKey=getch();

}

if (nKey=='Y'||nKey=='y') QUIT=TRUE;

if (!ALIVE||DONE) InitGame();

}

closemode();

KillAllTimer();

farfree(Video);

farfree(Back1);

farfree(Back2);

printf("***NOBLE STUDIO***Written By FanobleMeng--2001.12");

}

用到的头文件编写:

/*********************************************************/

/*                     文件:TIMER.H                     */

/*********************************************************/

/* 系统可用计时器的最大数目 */

# define  MAXTIMER     10

/* 计时器结构 */

struct TM

{

DWORD Interval;              /*      间隔       */

DWORD LastTimer;             /* 上次时间发生时间*/

BOOL  Enable;                /*      活动       */

BOOL  Used;                  /*      可用       */

void  (*Pointer)();          /*   事件远指针    */

};

struct TM tmTM[MAXTIMER+1];

int    TimerUsed=0;

/* 获取BIOS计数器数值 */

DWORD BiosTimer(void)

{

DWORD BIOSTIMER=0;

BIOSTIMER=peek(0x0,0x46e);

BIOSTIMER<<=8;

BIOSTIMER+=peek(0x0,0x46c);

return (BIOSTIMER);

}

/* 时间事件(时钟系统核心) */

void TimerEvent()

{

int   i;

DWORD TimerDiff;

for (i=1;i<=MAXTIMER;i++)

{

if (tmTM[i].Used&&tmTM[i].Enable)

{

TimerDiff=BiosTimer()-tmTM[i].LastTimer;

if (tmTM[i].Interval<=TimerDiff)

{

tmTM[i].Pointer();

tmTM[i].LastTimer=BiosTimer();

}

}

}

}

/* 创建一个时钟(成功返回时钟的句柄,否则返回NULL) */

int CreateTimer(DWORD Interval,void (*Pointer)())

{

int i=0;

if (TimerUsed==MAXTIMER) return NULL;

while (tmTM[++i].Used);

tmTM[i].Pointer=Pointer;

tmTM[i].Interval=Interval;

tmTM[i].Enable=TRUE;

tmTM[i].Used=TRUE;

tmTM[i].LastTimer=BiosTimer();

TimerUsed++;

return i;

}

/* 删除一个时钟 */

void KillTimer(int *TimerID)

{

if (tmTM[*TimerID].Used)

{

TimerUsed--;

tmTM[*TimerID].Used=FALSE;

}

*TimerID=0;

}

/* 删除所有时钟 */

void KillAllTimer()

{

int i;

for (i=0;i<=MAXTIMER;i++) tmTM[i].Used=FALSE;

TimerUsed=0;

}

/*********************************************************/

/*                     文件:13H.H                       */

/*********************************************************/

/* 此处定义了一些通用的宏 */

# define  BYTE         unsigned char

# define  BOOL         BYTE

# define  WORD         unsigned int

# define  DWORD        unsigned long

# define  TRUE         1

# define  FALSE        !TRUE

/* BIOS 8*8 西文字库的段地址和偏移量 */WORD FONT_SEG;WORD FONT_OFF;/* 显示后台活动页地址 */void far * Video;/* 获取BIOS 8*8 西文字库的段地址和偏移量 */void GetFontAdd(){  struct REGPACK regs;  regs.r_bx=0x0300;  regs.r_ax=0x1130;  intr(0x10,&regs);  FONT_SEG=regs.r_es;  FONT_OFF=regs.r_bp;}/* 向后台活动页写像素 */void Pset(int x,int y,BYTE color){  if ((x>=0)&&(x<320)&&(y>=0)&&(y<200))     *((BYTE far*)Video+y*320+x)=color;}/* 等待键盘输入 */void wait(){  _AX=0;  geninterrupt(0x16);}/* 设置VGA 13H模式 */void setmode(){  _AX=0x13;  geninterrupt(0x10);  GetFontAdd();}/* 设置文本模式 */void closemode(){  _AX=0x3;  geninterrupt(0x10);}/* 设置调色板 */void setpal(int Color,BYTE r,BYTE g,BYTE b){  outportb(0x3c8,Color);  outportb(0x3c9,r);  outportb(0x3c9,g);  outportb(0x3c9,b);}/* 屏幕定位(用于输出字符)*/void locate(int Line,int Col){  _DH=Line;  _DL=Col;  _AH=2;  _BX=0;  geninterrupt(0x10);}/* 从键盘缓冲区内直接读出扫描码 */BYTE ScanKey(void){  int  start,end;  WORD key=0;  start=peek(0,0x41a);  end=peek(0,0x41c);  if (start==end) return(0);  else  {    key=peek(0x40,start);    start+=2;    if (start==0x3e) start=0x1e;    poke(0x40,0x1a,start);    return(key/256);  }}/* 画背景 */void ClearScreen(){  int x,y;  for (y=0;y<5;y++) for (x=0;x<320;x++) Pset(x,y,16);  for (y=5;y<10;y++) for (x=0;x<320;x++) Pset(x,y,104);  for (y=10;y<15;y++) for (x=0;x<320;x++) Pset(x,y,33);  for (y=15;y<20;y++) for (x=0;x<320;x++) Pset(x,y,103);  for (y=20;y<25;y++) for (x=0;x<320;x++) Pset(x,y,32);  for (y=25;y<30;y++) for (x=0;x<320;x++) Pset(x,y,64);  for (y=30;y<40;y++) for (x=0;x<320;x++) Pset(x,y,99);  for (y=40;y<60;y++) for (x=0;x<320;x++) Pset(x,y,97);  for (y=60;y<100;y++) for (x=0;x<320;x++) Pset(x,y,53);  for (y=100;y<200;y++) for (x=0;x<320;x++) Pset(x,y,2);}/* 刷新屏幕 */void ReFresh(void){  movedata(FP_SEG(Video),FP_OFF(Video),0xa000,0,64000);}/* 输出字符到显示后台活动页 */void OutChar(int x0,int y0,int ch,BYTE Color){  int  x,y;  BYTE c;  for (y=0;y<8;y++)  {      c=peekb(FONT_SEG,FONT_OFF+ch*8+y);      for (x=0;x<8;x++)      {          if (c&(1<

潜艇大战c语言实验报告,潜艇大战游戏【C语言游戏】相关推荐

  1. c语言实验报告上理答案,C语言实验报告江西理工大学实验5

    <C语言实验报告江西理工大学实验5>由会员分享,可在线阅读,更多相关<C语言实验报告江西理工大学实验5(6页珍藏版)>请在读根文库上搜索. 1.C语言程序设计实验报告教学班级: ...

  2. 大一上期c语言实验报告2,大一上期C语言实验报告1熟悉实验环境

    <大一上期C语言实验报告1熟悉实验环境>由会员分享,可在线阅读,更多相关<大一上期C语言实验报告1熟悉实验环境(3页珍藏版)>请在人人文库网上搜索. 1.成都工业学院计算机工程 ...

  3. 湖北理工学院c语言实验报告答案,湖北理工学院c语言实验报告七答案.doc

    湖北理工学院c语言实验报告七答案.doc 实验七 结构体和共用体实验课程名高级语言程序设计(C)专业班级 学号 姓名 实验时间 实验地点 指导教师 一.实验目的和要求1. 掌握结构体类型变量的定义和使 ...

  4. 大一c语言实验报告运行结果,大一c语言实验报告

    篇一:大一上期C语言实验报告3 基本输入输出 成都工业学院·计算机工程学院 <程序设计基础>实验报告 1. 实验目的 (1) 熟练掌握scanf()/printf()库函数的调用格式,正确 ...

  5. 天津理工大学c语言实验报告8,天津理工大学-c语言上机报告4.doc

    天津理工大学-c语言上机报告4.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3 ...

  6. 大学c语言实验报告,上海工程技术大学C语言实验报告.doc

    上海工程技术大学C语言实验报告.doc 实 验 报 告高级语言程序设计20122013学年第 一 学期学院(部)管理学院指导教师李旭芳班级代号姓名/学号同组人无实验一一实验项目名称程序流程控制分别求1 ...

  7. c语言实验报告大作业答案,C语言实验报告摘要(共6篇)

    C语言实验报告摘要(共6篇) 第一部分: C语言实验经验 C语言实验经验 随着科学技术的飞速发展,计算机在人们中的作用越来越突出. C语言作为一种计算机语言,对其进行学习将有助于我们更好地理解计算机并 ...

  8. 厦门理工C语言实验报告8,厦门理工c语言数据结构实验

    <厦门理工c语言数据结构实验>由会员分享,可在线阅读,更多相关<厦门理工c语言数据结构实验(15页珍藏版)>请在人人文库网上搜索. 1.数据结构实验报告 实验序号:6 实验项目 ...

  9. 南工程c语言实验报告,Linux环境下-C语言编程实验报告(1)(总4页).doc

    Linux环境下-C语言编程实验报告(1)(总4页).doc 西 安 邮 电 大 学 (计算机学院)课内实验报告实验名称 Linux环境下 C语言编程 专业名称 网络工程班 级 1203班 学生姓名 ...

最新文章

  1. Exchange 2003群集的安装
  2. java 分页组件_java 代码组装的分页组件
  3. 作业帮冯雪胡不归问题_作业帮推出辅导老师“家庭陪伴计划” 让教育更有温度|讲题...
  4. 湘南学院校企计算机班,2020湘南学院重点学科名单特色专业有哪些?
  5. linux c 获取时间戳 打印时间戳
  6. LeetCode 55. 跳跃游戏(贪心)
  7. VS2013 加快编译速度 的方法整理
  8. 多个 本地仓库_【运维工具】搭建npm私有镜像仓库,天下苦于npm build久矣
  9. python编辑器背景设置为黑色_VScode 配置为Python编辑器
  10. 2019牛客多校第二场E MAZE(线段树 + 矩阵)题解
  11. windows下MATLAB2016a安装配置
  12. javascript延时setTimeOut与定时setInterval函数区别
  13. 地图制图基础(二):地图内容
  14. 篮球计时计分器c语言程序,C51的篮球计时计分器程序
  15. 北京无人驾驶路测进入“主驾无人”阶段
  16. 设计师点评互联网巨头Logo
  17. 三菱485BD板学习和认识
  18. presenting view controller Vs presented view controller
  19. VScode已经设置了默认浏览器依然不成功原因
  20. Android-在线视频播放器实现

热门文章

  1. 美国专利机构榜单:华为、京东方进前20名;印度巨头信实与微软结盟;三星发布 1.08 亿像素传感器,小米参与合作……...
  2. 怎么把手机题库的题打印出来
  3. 小书匠导出HTML,小书匠编辑器使用手册(2)
  4. 加入CSDN的2019天 回忆我的CSDN之旅
  5. This tool must be run as root
  6. 基于JAVA超市后台系统计算机毕业设计源码+系统+lw文档+部署
  7. 第三章、采购与供应链管理
  8. 手把手教学java微信公众号模版消息开发
  9. python爬取淘宝搜索页面+url+图片下载并将信息保存到MySQL数据库中
  10. 【Mpich_linux-centos7.9系统下最全编译安装调用】