老铁们,大家好,相信还有很多朋友对于gameplay function和gameplayfunction的相关问题不太懂,没关系,今天就由我来为大家分享分享gameplay function以及gameplayfunction的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
本文目录
cod怎么设置中文
Cod设置中文很简单,只需要在Cod中的"File"菜单中选择"Preferences",然后找到"UserInterface"选项卡,在"Language"下拉菜单中选择中文即可。这样设定后,可以使Cod的界面变成中文,同时也可以方便地阅读中文代码。
巫师3等级降低代码
代码设置等级不能降低,只能重开。但是可以用以下办法。
1、(盘符:\steam\steamapps\common\TheWitcher3\content\content0\scripts\game\gameplay\leveling)在上面文件夹找到levelmanger.ws,文本格式打开查找到“publicfunctionGetMaxLevel():int{return100;}”,把100改成110以上多少都行,然后保存,启动游戏。2、打开CE修改器,去杀个小怪搜索下经验值,找到经验值的内存地址双击记录下来先不用改。3、用巫师3控制台setlevel(此数值大于你当前的level)来回两三次,用CE找到level的内存地址,然后修改你需要的等级(然后你会发现经验值会多出好几万)4、再用CE修改经验值,比如48000就改成-48000、70000多就改-70000多。
《巫师3:狂猎》是由CDProjektRED制作,WBGames(北美地区)、SpikeChunsoft(日本地区)发行的一款角色扮演类游戏,于2015年5月19日在Windows/Playstation4/XboxOne平台发行,2019年10月13日登录NintendoSwitch平台。游戏改编自小说《猎魔人》系列,为《巫师》系列的第三部作品,同时也是杰洛特冒险的终曲。
简单C语言问题 linker error
这种提示是连接错误(Linkererror)。
一般可执行程序的过程是:源代码->目标代码(经过编译)->可执行程序(经过连接)。
你的问题就出在最后一步。那么为何出现这样的问题呢?
既然编译通过,说明你的源程序没问题。那么连接出错由什么原因引起的呢?
一般我们写程序不可能每个功能自己写,一些共用的功能(函数)被封装在库中(主要有两个文件:.h和.lib),你上面的错误说明graphics.h是存在的,所以没有编译错误,但是graphics.lib找不到,就不能进行连接。
解决方法:不管你用什么方法找到graphics.lib,复制到你编程环境中的LIB目录中去。
给你一个完整的贪吃蛇程序(要将TC拷贝至C盘下):
/*共有两关,有记时器和记分器;
按Enter键开局;
在游戏过程中,按ESC键退出,按Enter键重新开局;*/
#include<stdlib.h>
#include<graphics.h>
#include<bios.h>
#include<dos.h>
#include<conio.h>
#defineEnter7181
#defineESC283
#defineUP18432
#defineDOWN20480
#defineLEFT19200
#defineRIGHT19712
#ifdef__cplusplus
#define__CPPARGS...
#else
#define__CPPARGS
#endif
voidinterrupt(*oldhandler)(__CPPARGS);
voidinterruptnewhandler(__CPPARGS);
voidSetTimer(voidinterrupt(*IntProc)(__CPPARGS));
voidKillTimer(void);
voidInitgra(void);
voidTheFirstBlock(void);
voidDrawMap(void);
voidInitsnake(void);
voidInitfood(void);
voidSnake_Headmv(void);
voidFlag(int,int,int,int);
voidGameOver(void);
voidSnake_Bodymv(void);
voidSnake_Bodyadd(void);
voidPrntScore(void);
voidTimer(void);
voidWin(void);
voidTheSecondBlock(void);
voidFood(void);
voidDsnkorfd(int,int,int);
voidDelay(int);
structSnake
{intx;inty;intcolor;}Snk[12];
structFood
{intx;inty;intcolor;}Fd;
intflag1=1,flag2=0,flag3=0,flag4=0,flag5=0,flag6=0,
checkx,checky,num,key=0,Times,Score,Hscore,Snkspeed,TimerCounter,TureorFalse;
charSco[2],Time[6];
voidmain()
{Initgra();
SetTimer(newhandler);
TheFirstBlock();
while(1)
{DrawMap();
Snake_Headmv();
GameOver();
Snake_Bodymv();
Snake_Bodyadd();
PrntScore();
Timer();
Win();
if(key==ESC)
break;
if(key==Enter)
{cleardevice();
TheFirstBlock();
}
TheSecondBlock();
Food();
Delay(Snkspeed);
}
closegraph();
KillTimer();
}
voidinterruptnewhandler(__CPPARGS)
{
TimerCounter++;
oldhandler();
}
voidSetTimer(voidinterrupt(*IntProc)(__CPPARGS))
{
oldhandler=getvect(0x1c);
disable();
setvect(0x1c,IntProc);
enable();
}
voidKillTimer()
{
disable();
setvect(0x1c,oldhandler);
enable();
}
voidInitgra()
{intgd=DETECT,gm;
initgraph(&gd,&gm,"C:\\tc");
}
voidTheFirstBlock()
{setcolor(11);
settextstyle(0,0,4);
outtextxy(100,220,"TheFirstBlock");
loop:key=bioskey(0);
if(key==Enter)
{cleardevice();
Initsnake();
Initfood();
Score=0;
Hscore=1;
Snkspeed=10;
num=2;
Times=0;
key=0;
TureorFalse=1;
TimerCounter=0;
Time[0]='0';Time[1]='0';Time[2]=':';Time[3]='1';Time[4]='0';Time[5]='\0';
}
elseif(key==ESC)cleardevice();
elsegotoloop;
}
voidDrawMap()
{line(10,10,470,10);
line(470,10,470,470);
line(470,470,10,470);
line(10,470,10,10);
line(480,20,620,20);
line(620,20,620,460);
line(620,460,480,460);
line(480,460,480,20);
}
voidInitsnake()
{randomize();
num=2;
Snk[0].x=random(440);
Snk[0].x=Snk[0].x-Snk[0].x%20+50;
Snk[0].y=random(440);
Snk[0].y=Snk[0].y-Snk[0].y%20+50;
Snk[0].color=4;
Snk[1].x=Snk[0].x;
Snk[1].y=Snk[0].y+20;
Snk[1].color=4;
}
voidInitfood()
{randomize();
Fd.x=random(440);
Fd.x=Fd.x-Fd.x%20+30;
Fd.y=random(440);
Fd.y=Fd.y-Fd.y%20+30;
Fd.color=random(14)+1;
}
voidSnake_Headmv()
{if(bioskey(1))
{key=bioskey(0);
switch(key)
{caseUP:Flag(1,0,0,0);break;
caseDOWN:Flag(0,1,0,0);break;
caseLEFT:Flag(0,0,1,0);break;
caseRIGHT:Flag(0,0,0,1);break;
default:break;
}
}
if(flag1)
{checkx=Snk[0].x;
checky=Snk[0].y;
Dsnkorfd(Snk[0].x,Snk[0].y,0);
Snk[0].y-=20;
Dsnkorfd(Snk[0].x,Snk[0].y,Snk[0].color);
}
if(flag2)
{checkx=Snk[0].x;
checky=Snk[0].y;
Dsnkorfd(Snk[0].x,Snk[0].y,0);
Snk[0].y+=20;
Dsnkorfd(Snk[0].x,Snk[0].y,Snk[0].color);
}
if(flag3)
{checkx=Snk[0].x;
checky=Snk[0].y;
Dsnkorfd(Snk[0].x,Snk[0].y,0);
Snk[0].x-=20;
Dsnkorfd(Snk[0].x,Snk[0].y,Snk[0].color);
}
if(flag4)
{checkx=Snk[0].x;
checky=Snk[0].y;
Dsnkorfd(Snk[0].x,Snk[0].y,0);
Snk[0].x+=20;
Dsnkorfd(Snk[0].x,Snk[0].y,Snk[0].color);
}
}
voidFlag(inta,intb,intc,intd)
{flag1=a;flag2=b;flag3=c;flag4=d;}
voidGameOver()
{inti;
if(Snk[0].x<20||Snk[0].x>460||Snk[0].y<20||Snk[0].y>460)
{cleardevice();
setcolor(11);
settextstyle(0,0,4);
outtextxy(160,220,"GameOver");
loop1:key=bioskey(0);
if(key==Enter)
{cleardevice();
TheFirstBlock();
}
else
if(key==ESC)
cleardevice();
else
gotoloop1;
}
for(i=3;i<num;i++)
{if(Snk[0].x==Snk[i].x&&Snk[0].y==Snk[i].y)
{cleardevice();
setcolor(11);
settextstyle(0,0,4);
outtextxy(160,220,"GameOver");
loop2:key=bioskey(0);
if(key==Enter)
{cleardevice();
TheFirstBlock();
}
else
if(key==ESC)
cleardevice();
elsegotoloop2;
}
}
}
voidSnake_Bodymv()
{inti,s,t;
for(i=1;i<num;i++)
{Dsnkorfd(checkx,checky,Snk[i].color);
Dsnkorfd(Snk[i].x,Snk[i].y,0);
s=Snk[i].x;
t=Snk[i].y;
Snk[i].x=checkx;
Snk[i].y=checky;
checkx=s;
checky=t;
}
}
voidFood()
{if(flag5)
{randomize();
Fd.x=random(440);
Fd.x=Fd.x-Fd.x%20+30;
Fd.y=random(440);
Fd.y=Fd.y-Fd.y%20+30;
Fd.color=random(14)+1;
flag5=0;
}
Dsnkorfd(Fd.x,Fd.y,Fd.color);
}
voidSnake_Bodyadd()
{if(Snk[0].x==Fd.x&&Snk[0].y==Fd.y)
{if(Snk[num-1].x>Snk[num-2].x)
{num++;
Snk[num-1].x=Snk[num-2].x+20;
Snk[num-1].y=Snk[num-2].y;
Snk[num-1].color=Fd.color;
}
else
if(Snk[num-1].x<Snk[num-2].x)
{num++;
Snk[num-1].x=Snk[num-2].x-20;
Snk[num-1].y=Snk[num-2].y;
Snk[num-1].color=Fd.color;
}
else
if(Snk[num-1].y>Snk[num-2].y)
{num++;
Snk[num-1].x=Snk[num-2].x;
Snk[num-1].y=Snk[num-2].y+20;
Snk[num-1].color=Fd.color;
}
else
if(Snk[num-1].y<Snk[num-2].y)
{num++;
Snk[num-1].x=Snk[num-2].x;
Snk[num-1].y=Snk[num-2].y-20;
Snk[num-1].color=Fd.color;
}
flag5=1;
Score++;
}
}
voidPrntScore()
{if(Hscore!=Score)
{setcolor(11);
settextstyle(0,0,3);
outtextxy(490,100,"SCORE");
setcolor(2);
setfillstyle(1,0);
rectangle(520,140,580,180);
floodfill(530,145,2);
Sco[0]=(char)(Score+48);
Sco[1]='\0';
Hscore=Score;
setcolor(4);
settextstyle(0,0,3);
outtextxy(540,150,Sco);
}
}
voidTimer()
{if(TimerCounter>18)
{Time[4]=(char)(Time[4]-1);
if(Time[4]<'0')
{Time[4]='9';
Time[3]=(char)(Time[3]-1);
}
if(Time[3]<'0')
{Time[3]='5';
Time[1]=(char)(Time[1]-1);
}
if(TureorFalse)
{setcolor(11);
settextstyle(0,0,3);
outtextxy(490,240,"TIMER");
setcolor(2);
setfillstyle(1,0);
rectangle(490,280,610,320);
floodfill(530,300,2);
setcolor(11);
settextstyle(0,0,3);
outtextxy(495,290,Time);
TureorFalse=0;
}
if(Time[1]=='0'&&Time[3]=='0'&&Time[4]=='0')
{setcolor(11);
settextstyle(0,0,4);
outtextxy(160,220,"GameOver");
loop:key=bioskey(0);
if(key==Enter)
{cleardevice();
TheFirstBlock();
}
elseif(key==ESC)cleardevice();
elsegotoloop;
}
TimerCounter=0;
TureorFalse=1;
}
}
voidWin()
{if(Score==3)
Times++;
if(Times==2)
{cleardevice();
setcolor(11);
settextstyle(0,0,4);
outtextxy(160,220,"YouWin");
loop:key=bioskey(0);
if(key==Enter)
{cleardevice();
TheFirstBlock();
key=0;
}
elseif(key==ESC)cleardevice();
elsegotoloop;
}
}
voidTheSecondBlock()
{if(Score==3)
{cleardevice();
setcolor(11);
settextstyle(0,0,4);
outtextxy(100,220,"TheSecondBlock");
loop:key=bioskey(0);
if(key==Enter)
{cleardevice();
Initsnake();
Initfood();
Score=0;
Hscore=1;
Snkspeed=8;
num=2;
key=0;
}
elseif(key==ESC)cleardevice();
elsegotoloop;
}
}
voidDsnkorfd(intx,inty,intcolor)
{setcolor(color);
setfillstyle(1,color);
circle(x,y,10);
floodfill(x,y,color);
}
voidDelay(inttimes)
{inti;
for(i=1;i<=times;i++)
delay(15000);
}
求C语言小游戏源程序
我的楼主可以自己玩一下
试试吧
#defineN200
#include<graphics.h>
#include<stdlib.h>
#include<dos.h>
#defineLEFT0x4b00
#defineRIGHT0x4d00
#defineDOWN0x5000
#defineUP0x4800
#defineESC0x011b
inti,key;
intscore=0;/*得分*/
intgamespeed=50000;/*游戏速度自己调整*/
structFood
{
intx;/*食物的横坐标*/
inty;/*食物的纵坐标*/
intyes;/*判断是否要出现食物的变量*/
}food;/*食物的结构体*/
structSnake
{
intx[N];
inty[N];
intnode;/*蛇的节数*/
intdirection;/*蛇移动方向*/
intlife;/*蛇的生命,0活着,1死亡*/
}snake;
voidInit(void);/*图形驱动*/
voidClose(void);/*图形结束*/
voidDrawK(void);/*开始画面*/
voidGameOver(void);/*结束游戏*/
voidGamePlay(void);/*玩游戏具体过程*/
voidPrScore(void);/*输出成绩*/
/*主函数*/
voidmain(void)
{
Init();/*图形驱动*/
DrawK();/*开始画面*/
GamePlay();/*玩游戏具体过程*/
Close();/*图形结束*/
}
/*图形驱动*/
voidInit(void)
{
intgd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}
/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/
voidDrawK(void)
{
/*setbkcolor(LIGHTGREEN);*/
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/
for(i=50;i<=600;i+=10)/*画围墙*/
{
rectangle(i,40,i+10,49);/*上边*/
rectangle(i,451,i+10,460);/*下边*/
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10);/*左边*/
rectangle(601,i,610,i+10);/*右边*/
}
}
/*玩游戏具体过程*/
voidGamePlay(void)
{
randomize();/*随机数发生器*/
food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/
snake.life=0;/*活着*/
snake.direction=1;/*方向往右*/
snake.x[0]=100;snake.y[0]=100;/*蛇头*/
snake.x[1]=110;snake.y[1]=100;
snake.node=2;/*节数*/
PrScore();/*输出得分*/
while(1)/*可以重复玩游戏,压ESC键结束*/
{
while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/
{
if(food.yes==1)/*需要出现新食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/
food.x++;
while(food.y!=0)
food.y++;
food.yes=0;/*画面上有食物了*/
}
if(food.yes==0)/*画面上有食物了就要显示*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/
switch(snake.direction)
{
case1:snake.x[0]+=10;break;
case2:snake.x[0]-=10;break;
case3:snake.y[0]-=10;break;
case4:snake.y[0]+=10;break;
}
for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();/*显示失败*/
snake.life=1;
break;
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||
snake.y[0]>455)/*蛇是否撞到墙壁*/
{
GameOver();/*本次游戏结束*/
snake.life=1;/*蛇死*/
}
if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/
{
setcolor(0);/*把画面上的食物东西去掉*/
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/
snake.node++;/*蛇的身体长一节*/
food.yes=1;/*画面上需要出现新的食物*/
score+=10;
PrScore();/*输出新得分*/
}
setcolor(4);/*画出蛇*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,
snake.y[i]-10);
delay(gamespeed);
setcolor(0);/*用黑色去除蛇的的最后一节*/
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}/*endwhile(!kbhit)*/
if(snake.life==1)/*如果蛇死就跳出循环*/
break;
key=bioskey(0);/*接收按键*/
if(key==ESC)/*按ESC键退出*/
break;
else
if(key==UP&&snake.direction!=4)
/*判断是否往相反的方向移动*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}/*endwhile(1)*/
}
/*游戏结束*/
voidGameOver(void)
{
cleardevice();
PrScore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAMEOVER");
getch();
}
/*输出成绩*/
voidPrScore(void)
{
charstr[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
}
/*图形结束*/
voidClose(void)
{
getch();
closegraph();
}
dev-c++小游戏代码,急急急急!!!
#include<iostream>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<string>
usingnamespacestd;
/*===============allthestructures===============*/
typedefstructFrame
{
COORDposition[2];
intflag;
}Frame;
/*===============allthefunctions===============*/
voidSetPos(COORDa)//setcursor
{
HANDLEout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(out,a);
}
voidSetPos(inti,intj)//setcursor
{
COORDpos={i,j};
SetPos(pos);
}
voidHideCursor()
{
CONSOLE_CURSOR_INFOcursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
//把第y行,[x1,x2)之间的坐标填充为ch
voiddrawRow(inty,intx1,intx2,charch)
{
SetPos(x1,y);
for(inti=0;i<=(x2-x1);i++)
cout<<ch;
}
//在a,b纵坐标相同的前提下,把坐标[a,b]之间填充为ch
voiddrawRow(COORDa,COORDb,charch)
{
if(a.Y==b.Y)
drawRow(a.Y,a.X,b.X,ch);
else
{
SetPos(0,25);
cout<<"errorcode01:无法填充行,因为两个坐标的纵坐标(x)不相等";
system("pause");
}
}
//把第x列,[y1,y2]之间的坐标填充为ch
voiddrawCol(intx,inty1,inty2,charch)
{
inty=y1;
while(y!=y2+1)
{
SetPos(x,y);
cout<<ch;
y++;
}
}
//在a,b横坐标相同的前提下,把坐标[a,b]之间填充为ch
voiddrawCol(COORDa,COORDb,charch)
{
if(a.X==b.X)
drawCol(a.X,a.Y,b.Y,ch);
else
{
SetPos(0,25);
cout<<"errorcode02:无法填充列,因为两个坐标的横坐标(y)不相等";
system("pause");
}
}
//左上角坐标、右下角坐标、用row填充行、用col填充列
voiddrawFrame(COORDa,COORDb,charrow,charcol)
{
drawRow(a.Y,a.X+1,b.X-1,row);
drawRow(b.Y,a.X+1,b.X-1,row);
drawCol(a.X,a.Y+1,b.Y-1,col);
drawCol(b.X,a.Y+1,b.Y-1,col);
}
voiddrawFrame(intx1,inty1,intx2,inty2,charrow,charcol)
{
COORDa={x1,y1};
COORDb={x2,y2};
drawFrame(a,b,row,col);
}
voiddrawFrame(Frameframe,charrow,charcol)
{
COORDa=frame.position[0];
COORDb=frame.position[1];
drawFrame(a,b,row,col);
}
voiddrawPlaying()
{
drawFrame(0,0,48,24,'=','|');// drawmapframe;
drawFrame(49,0,79,4,'-','|');// drawoutputframe
drawFrame(49,4,79,9,'-','|');// drawscoreframe
drawFrame(49,9,79,20,'-','|');// drawoperateframe
drawFrame(49,20,79,24,'-','|');// drawothermessageframe
SetPos(52,6);
cout<<"得分:";
SetPos(52,7);
cout<<"称号:";
SetPos(52,10);
cout<<"操作方式:";
SetPos(52,12);
cout<<"a,s,d,w控制战机移动。";
SetPos(52,14);
cout<<"p暂停游戏。";
SetPos(52,16);
cout<<"e退出游戏。";
SetPos(52,18);
cout<<"k发射子弹。";
}
//在[a,b)之间产生一个随机整数
intrandom(inta,intb)
{
intc=(rand()%(a-b))+a;
returnc;
}
//在两个坐标包括的矩形框内随机产生一个坐标
COORDrandom(COORDa,COORDb)
{
intx=random(a.X,b.X);
inty=random(a.Y,b.Y);
COORDc={x,y};
returnc;
}
booljudgeCoordInFrame(Frameframe,COORDspot)
{
if(spot.X>=frame.position[0].X)
if(spot.X<=frame.position[1].X)
if(spot.Y>=frame.position[0].Y)
if(spot.Y<=frame.position[0].Y)
returntrue;
returnfalse;
}
voidprintCoord(COORDa)
{
cout <<"("<<a.X<<","<<a.Y<<")";
}
voidprintFrameCoord(Framea)
{
printCoord(a.position[0]);
cout <<"-";
printCoord(a.position[1]);
}
intdrawMenu()
{
SetPos(30,1);
cout<<"PlaneWar";
drawRow(3,0,79,'-');
drawRow(5,0,79,'-');
SetPos(28,4);
cout<<"w和s选择,k确定";
SetPos(15,11);
cout<<"1.简单的敌人";
SetPos(15,13);
cout<<"2.冷酷的敌人";
drawRow(20,0,79,'-');
drawRow(22,0,79,'-');
SetPos(47,11);
cout<<"简单的敌人:";
SetPos(51,13);
cout<<"简单敌人有着较慢的移动速度。";
SetPos(24,21);
cout<<"☆○☆○☆○☆○☆○☆";
intj=11;
SetPos(12,j);
cout<<">>";
//drawFrame(45,9,79,17,'=','|');
while(1)
{ if(_kbhit())
{
charx=_getch();
switch(x)
{
case'w':
{
if(j==13)
{
SetPos(12,j);
cout<<"";
j=11;
SetPos(12,j);
cout<<">>";
SetPos(51,13);
cout<<"";
SetPos(47,11);
cout<<"简单的敌人:";
SetPos(51,13);
cout<<"简单敌人有着较慢的移动速度。";
}
break;
}
case's':
{
if(j==11)
{
SetPos(12,j);
cout<<"";
j=13;
SetPos(12,j);
cout<<">>";
SetPos(51,13);
cout<<"";
SetPos(47,11);
cout<<"冷酷的敌人:";
SetPos(51,13);
cout<<"冷酷的敌人移动速度较快。";
}
break;
}
case'k':
{
if(j==8) return1;
elsereturn2;
}
}
}
}
}
/*
DWORDWINAPIMusicFun(LPVOIDlpParamte)
{
//DWORDOBJ;
sndPlaySound(TEXT("bgm.wav"),SND_FILENAME|SND_ASYNC);
return0;
}
*/
/*==================theGameClass==================*/
classGame
{
public:
COORDposition[10];
COORDbullet[10];
Frameenemy[8];
intscore;
intrank;
intrankf;
stringtitle;
intflag_rank;
Game();
//初始化所有
voidinitPlane();
voidinitBullet();
voidinitEnemy();
//初始化其中一个
//voidinitThisBullet(COORD);
//voidinitThisEnemy(Frame);
voidplaneMove(char);
voidbulletMove();
voidenemyMove();
//填充所有
voiddrawPlane();
voiddrawPlaneToNull();
voiddrawBullet();
voiddrawBulletToNull();
voiddrawEnemy();
voiddrawEnemyToNull();
//填充其中一个
voiddrawThisBulletToNull(COORD);
voiddrawThisEnemyToNull(Frame);
voidPause();
voidPlaying();
voidjudgePlane();
voidjudgeEnemy();
voidShoot();
voidGameOver();
voidprintScore();
};
Game::Game()
{
initPlane();
initBullet();
initEnemy();
score=0;
rank=25;
rankf=0;
flag_rank=0;
}
voidGame::initPlane()
{
COORDcentren={39,22};
position[0].X=position[5].X=position[7].X=position[9].X=centren.X;
position[1].X=centren.X-2;
position[2].X=position[6].X=centren.X-1;
position[3].X=position[8].X=centren.X+1;
position[4].X=centren.X+2;
for(inti=0;i<=4;i++)
position[i].Y=centren.Y;
for(inti=6;i<=8;i++)
position[i].Y=centren.Y+1;
position[5].Y=centren.Y-1;
position[9].Y=centren.Y-2;
}
voidGame::drawPlane()
{
for(inti=0;i<9;i++)
{
SetPos(position[i]);
if(i!=5)
cout<<"o";
elseif(i==5)
cout<<"|";
}
}
voidGame::drawPlaneToNull()
{
for(inti=0;i<9;i++)
{
SetPos(position[i]);
cout<<"";
}
}
voidGame::initBullet()
{
for(inti=0;i<10;i++)
bullet[i].Y=30;
}
voidGame::drawBullet()
{
for(inti=0;i<10;i++)
{
if(bullet[i].Y!=30)
{
SetPos(bullet[i]);
cout<<"^";
}
}
}
voidGame::drawBulletToNull()
{
for(inti=0;i<10;i++)
if(bullet[i].Y!=30)
{
COORDpos={bullet[i].X,bullet[i].Y+1};
SetPos(pos);
cout<<"";
}
}
voidGame::initEnemy()
{
COORDa={1,1};
COORDb={45,15};
for(inti=0;i<8;i++)
{
enemy[i].position[0]=random(a,b);
enemy[i].position[1].X=enemy[i].position[0].X+3;
enemy[i].position[1].Y=enemy[i].position[0].Y+2;
}
}
voidGame::drawEnemy()
{
for(inti=0;i<8;i++)
drawFrame(enemy[i].position[0],enemy[i].position[1],'-','|');
}
voidGame::drawEnemyToNull()
{
for(inti=0;i<8;i++)
{
drawFrame(enemy[i].position[0],enemy[i].position[1],'','');
}
}
voidGame::Pause()
{
SetPos(61,2);
cout<<"";
SetPos(61,2);
cout<<"暂停中...";
charc=_getch();
while(c!='p')
c=_getch();
SetPos(61,2);
cout<<"";
}
voidGame::planeMove(charx)
{
if(x=='a')
if(position[1].X!=1)
for(inti=0;i<=9;i++)
position[i].X-=2;
if(x=='s')
if(position[7].Y!=23)
for(inti=0;i<=9;i++)
position[i].Y+=1;
if(x=='d')
if(position[4].X!=47)
for(inti=0;i<=9;i++)
position[i].X+=2;
if(x=='w')
if(position[5].Y!=3)
for(inti=0;i<=9;i++)
position[i].Y-=1;
}
voidGame::bulletMove()
{
for(inti=0;i<10;i++)
{
if(bullet[i].Y!=30)
{
bullet[i].Y-=1;
if(bullet[i].Y==1)
{
COORDpos={bullet[i].X,bullet[i].Y+1};
drawThisBulletToNull(pos);
bullet[i].Y=30;
}
}
}
}
voidGame::enemyMove()
{
for(inti=0;i<8;i++)
{
for(intj=0;j<2;j++)
enemy[i].position[j].Y++;
if(24==enemy[i].position[1].Y)
{
COORDa={1,1};
COORDb={45,3};
enemy[i].position[0]=random(a,b);
enemy[i].position[1].X=enemy[i].position[0].X+3;
enemy[i].position[1].Y=enemy[i].position[0].Y+2;
}
}
}
voidGame::judgePlane()
{
for(inti=0;i<8;i++)
for(intj=0;j<9;j++)
if(judgeCoordInFrame(enemy[i],position[j]))
{
SetPos(62,1);
cout<<"坠毁";
drawFrame(enemy[i],'+','+');
Sleep(1000);
GameOver();
break;
}
}
voidGame::drawThisBulletToNull(COORDc)
{
SetPos(c);
cout<<"";
}
voidGame::drawThisEnemyToNull(Framef)
{
drawFrame(f,'','');
}
voidGame::judgeEnemy()
{
for(inti=0;i<8;i++)
for(intj=0;j<10;j++)
if(judgeCoordInFrame(enemy[i],bullet[j]))
{
score+=5;
drawThisEnemyToNull(enemy[i]);
COORDa={1,1};
COORDb={45,3};
enemy[i].position[0]=random(a,b);
enemy[i].position[1].X=enemy[i].position[0].X+3;
enemy[i].position[1].Y=enemy[i].position[0].Y+2;
drawThisBulletToNull(bullet[j]);
bullet[j].Y=30;
}
}
voidGame::Shoot()
{
for(inti=0;i<10;i++)
if(bullet[i].Y==30)
{
bullet[i].X=position[5].X;
bullet[i].Y=position[5].Y-1;
break;
}
}
voidGame::printScore()
{
if(score==120&&flag_rank==0)
{
rank-=3;
flag_rank=1;
}
elseif(score==360&&flag_rank==1)
{
rank-=5;
flag_rank=2;
}
elseif(score==480&&flag_rank==2)
{
rank-=5;
flag_rank=3;
}
intx=rank/5;
SetPos(60,6);
cout<<score;
if(rank!=rankf)
{
SetPos(60,7);
if(x==5)
title="初级飞行员";
elseif(x==4)
title="中级飞行员";
elseif(x==3)
title="高级飞行员";
elseif(x==2)
title="王牌飞行员";
cout<<title;
}
rankf=rank;
}
voidGame::Playing()
{
//HANDLEMFUN;
//MFUN=CreateThread(NULL,0,MusicFun,NULL,0,NULL);
drawEnemy();
drawPlane();
intflag_bullet=0;
intflag_enemy=0;
while(1)
{
Sleep(8);
if(_kbhit())
{
charx=_getch();
if('a'==x||'s'==x||'d'==x||'w'==x)
{
drawPlaneToNull();
planeMove(x);
drawPlane();
judgePlane();
}
elseif('p'==x)
Pause();
elseif('k'==x)
Shoot();
elseif('e'==x)
{
//CloseHandle(MFUN);
GameOver();
break;
}
}
/*处理子弹*/
if(0==flag_bullet)
{
bulletMove();
drawBulletToNull();
drawBullet();
judgeEnemy();
}
flag_bullet++;
if(5==flag_bullet)
flag_bullet=0;
/*处理敌人*/
if(0==flag_enemy)
{
drawEnemyToNull();
enemyMove();
drawEnemy();
judgePlane();
}
flag_enemy++;
if(flag_enemy>=rank)
flag_enemy=0;
/*输出得分*/
printScore();
}
}
voidGame::GameOver()
{
system("cls");
COORDp1={28,9};
COORDp2={53,15};
drawFrame(p1,p2,'=','|');
SetPos(36,12);
stringstr="GameOver!";
for(inti=0;i<str.size();i++)
{
Sleep(80);
cout<<str[i];
}
Sleep(1000);
system("cls");
drawFrame(p1,p2,'=','|');
SetPos(31,11);
cout<<"击落敌机:"<<score/5<<"架";
SetPos(31,12);
cout<<"得分:"<<score;
SetPos(31,13);
cout<<"获得称号:"<<title;
SetPos(30,16);
Sleep(1000);
cout<<"继续?是(y)|否(n)";
as:
charx=_getch();
if(x=='n')
exit(0);
elseif(x=='y')
{
system("cls");
Gamegame;
inta=drawMenu();
if(a==2)
game.rank=20;
system("cls");
drawPlaying();
game.Playing();
}
elsegotoas;
}
/*==================themainfunction==================*/
intmain()
{
//游戏准备
srand((int)time(0)); //随机种子
HideCursor(); //隐藏光标
Gamegame;
inta=drawMenu();
if(a==2)
game.rank=20;
system("cls");
drawPlaying();
game.Playing();
}
关于本次gameplay function和gameplayfunction的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。