📄 czdemo.cpp
字号:
Blt(pBBuf,6*32,6*32,shop,GetRect(0,0,640,413),false);
int x=7*32+20;
int y=x;
RECT rect={0,0,100,100};
int row=0;
int kind=-1;
mygame.CheckToolsNum();//检查并更正物品数量
for(int i=0;i<7;i++)//六种卡片
{
kind++;
if(row>3)//从0开始到3共四个
{
y=7*32+50+130;
x=7*32+20-4*100-4*40;
}
switch(kind)
{
case COMPMANAGER:
Blt(pBBuf,x+row*100+row*40,y,cm,rect,true);
//测试
_itoa(mygame.cmnum,showcardnum,10);
PrintText(pBBuf,x+row*100+row*40,y+100,"余张数:",RGB(0,0,0));
PrintText(pBBuf,x+row*100+row*40+80,y+100,showcardnum,RGB(0,0,0));
row++;
break;
case REMODICE:
Blt(pBBuf,x+row*100+row*40,y,rd,rect,true);
//测试
_itoa(mygame.rdnum,showcardnum,10);
PrintText(pBBuf,x+row*100+row*40,y+100,"余张数:",RGB(0,0,0));
PrintText(pBBuf,x+row*100+row*40+80,y+100,showcardnum,RGB(0,0,0));
row++;
break;
case PASSPORT:
Blt(pBBuf,x+row*100+row*40,y,pp,rect,true);
//测试
_itoa(mygame.ppnum,showcardnum,10);
PrintText(pBBuf,x+row*100+row*40,y+100,"余张数:",RGB(0,0,0));
PrintText(pBBuf,x+row*100+row*40+80,y+100,showcardnum,RGB(0,0,0));
row++;
break;
case STOPCARD:
Blt(pBBuf,x+row*100+row*40,y,sc,rect,true);
//测试
_itoa(mygame.stcnum,showcardnum,10);
PrintText(pBBuf,x+row*100+row*40,y+100,"余张数:",RGB(0,0,0));
PrintText(pBBuf,x+row*100+row*40+80,y+100,showcardnum,RGB(0,0,0));
row++;
break;
case SUPERCAR:
Blt(pBBuf,x+row*100+row*40,y,suc,rect,true);
//测试
_itoa(mygame.scnum,showcardnum,10);
PrintText(pBBuf,x+row*100+row*40,y+100,"余张数:",RGB(0,0,0));
PrintText(pBBuf,x+row*100+row*40+80,y+100,showcardnum,RGB(0,0,0));
row++;
break;
case TORTCARD:
Blt(pBBuf,x+row*100+row*40,y,tt,rect,true);
//测试
_itoa(mygame.tcnum,showcardnum,10);
PrintText(pBBuf,x+row*100+row*40,y+100,"余张数:",RGB(0,0,0));
PrintText(pBBuf,x+row*100+row*40+80,y+100,showcardnum,RGB(0,0,0));
row++;
break;
case BUYCARD:
Blt(pBBuf,x+row*100+row*40,y,bc,rect,true);
//测试
_itoa(mygame.bcnum,showcardnum,10);
PrintText(pBBuf,x+row*100+row*40,y+100,"余张数:",RGB(0,0,0));
PrintText(pBBuf,x+row*100+row*40+80,y+100,showcardnum,RGB(0,0,0));
row++;
break;
}
}
//Flip();
PrintText(pBBuf,7*32+10,7*32-18,"请选择要购买的物品,按回车键确定:",RGB(0,0,0));
PrintText(pBBuf,7*32+10,7*32+310,"放弃购买请按Ctrl键退出菜单。",RGB(0,0,0));
return;
}
//显示除了playerid的所有角色头像
int showplayerpics(int playerid)
{
GL_GamePicShowSilence();
int count=0;
int x=7*32+20;
int y=x;
Blt(pBBuf,6*32,6*32,pDialog1,GetRect(0,0,640,382),false);
RECT rect={0,0,140,163};
int row=0;
for(int i=0;i<mygame.GetMode();i++)
{
if(row>3)//从0开始到3共四个
{
y=7*32+50+160;
x=7*32+20-4*120-4*20;
}
if(i!=playerid && players[i].IsExist())//需要显示其头像
{
//使用带缩放的帖图
SBlt(pBBuf,GetRect(x+row*160,y,x+row*160+117,y+136),players[i].pPhoto1,GetRect(0,0,140,163),false);
row++;
count++;//可收购对象记数
}
}
PrintText(pBBuf,7*32+10,7*32-18,"请选择角色对象,按回车键确定:",RGB(255,255,255),OPAQUE,RGB(0,0,0));
PrintText(pBBuf,7*32+10,7*32+300,"放弃使用请按Ctrl键退出菜单。",RGB(255,255,255),OPAQUE,RGB(0,0,0));
return count;
}
//显示playerid的建筑
int showbuilding(int playerid,bool& hasbu,bool& hasfa)
{
int playerBuinum=players[playerid].buildingnum;
int playerFacnum=players[playerid].factorynum;
int bandfnum=0;//房屋和建筑的总数量
if(playerBuinum<=0 && playerFacnum<=0)
{
return 0;//这种情况一般不会出现,在前面应有检测
}
else
{
GL_GamePicShowSilence();
Blt(pBBuf,6*32,6*32,pDialog1,GetRect(0,0,640,382),false);
int x=6*32+20+190; //建筑左上角坐标
int y=6*32+50;
RECT rect={0,0,96,96};
int row=0;
//显示所选的人头像
Blt(pBBuf,6*32+20,6*32+70,players[playerid].pPhoto1,GetRect(0,0,140,163),false);
if(playerBuinum>=1)
hasbu=true;
if(playerFacnum>=1)
hasfa=true;
int Num=playerFacnum;//playerFacnum;//总的工厂数量
if(hasbu && Num>=5)
Num=5;
if(!hasbu && Num>=6)
Num=6;
//若有房产,则先帖一个图
if(hasbu)
{
RECT rect={0,0,96,96};//房屋大图片
Blt(pBBuf,x,y,buildingSur,rect,true);
row++;
bandfnum++;
}
bandfnum+=Num;//记录建筑总数
int si=1;//记录收索到了的index位置
if(hasfa)
{
MyFactory tempf;
while(si<=maps.pfactory.listlength())
{
if(row>=3)//从0开始到2共三个
{
y=6*32+50+150;
x=6*32+20+190-3*96-3*43;
}
else
{
x=6*32+20+190;
y=6*32+50;
}
maps.pfactory.getelem(si,tempf);
if(tempf.owner==playerid)//找到一个factory主人。
{
switch (tempf.kind)
{
case BUILDFACTORY0:
Blt(pBBuf,x+row*(96+43),y,autofSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
case BUILDFACTORY1:
Blt(pBBuf,x+row*(96+43),y,foodfSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
case BUILDFACTORY2:
Blt(pBBuf,x+row*(96+43),y,restafSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
case BUILDFACTORY3:
Blt(pBBuf,x+row*(96+43),y,minerfSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
case BUILDFACTORY4:
Blt(pBBuf,x+row*(96+43),y,spinmfSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
case BUILDFACTORY5:
Blt(pBBuf,x+row*(96+43),y,smeltfSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
default:
Blt(pBBuf,x+row*(96+43),y,autofSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
}//switch tempf.kind根据kind作图
// break;//退出while
}//if找到了
si++;
}//while
}//if(playerFacnum!=0)作工厂图
//}
PrintText(pBBuf,6*32+15,6*32+10,"请选择建筑:");
PrintText(pBBuf,7*32+10,7*32+300,"放弃使用请按Ctrl键退出菜单。");
// Flip();
}
return bandfnum;//Building AND Factory NUMber->bandfnum
}
//显示playerid的建筑
int _showbuilding(int playerid,bool& hasbu,bool& hasfa,int* recordkind)
{
int playerBuinum=players[playerid].buildingnum;
int playerFacnum=players[playerid].factorynum;
int bandfnum=0;//房屋和建筑的总数量
if(playerBuinum==0 && playerFacnum==0)
{
return 0;//这种情况一般不会出现,在前面应有检测
}
else
{
GL_GamePicShowSilence();
Blt(pBBuf,6*32,6*32,pDialog1,GetRect(0,0,640,382),false);
int x=6*32+20+190; //建筑左上角坐标
int y=6*32+50;
RECT rect={0,0,96,96};
int row=0;
//显示所选的人头像
Blt(pBBuf,6*32+20,6*32+70,players[playerid].pPhoto1,GetRect(0,0,140,163),false);
if(playerBuinum!=0)
hasbu=true;
if(playerFacnum!=0)
hasfa=true;
int Num=playerFacnum;//playerFacnum;//总的工厂数量
if(hasbu && Num>=5)
Num=5;
if(!hasbu && Num>=6)
Num=6;
//若有房产,则先帖一个图
if(hasbu)
{
RECT rect={0,0,96,96};//房屋大图片
Blt(pBBuf,x,y,buildingSur,rect,true);
row++;
bandfnum+=1;
}
bandfnum+=Num;//记录建筑总数
int si=1;//记录收索到了的index位置
//不能在这个函数里为其分配空间
//recordkind=new int[bandfnum];//分配选项记录个数空间
int inofrk=0;//index of recordkind
if(hasbu)
{
recordkind[inofrk]=0;//0表示为房屋
inofrk++;
}
if(hasfa)
{
MyFactory tempf;
while(si<=maps.pfactory.listlength())
{
if(row>=3)//从0开始到2共三个
{
y=6*32+50+150;
x=6*32+20+190-3*96-3*43;
}
else
{
x=6*32+20+190;
y=6*32+50;
}
maps.pfactory.getelem(si,tempf);
if(tempf.owner==playerid)//找到一个factory主人。
{
recordkind[inofrk]=tempf.kind;
inofrk++;
switch (tempf.kind)
{
case BUILDFACTORY0:
Blt(pBBuf,x+row*(96+43),y,autofSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
case BUILDFACTORY1:
Blt(pBBuf,x+row*(96+43),y,foodfSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
case BUILDFACTORY2:
Blt(pBBuf,x+row*(96+43),y,restafSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
case BUILDFACTORY3:
Blt(pBBuf,x+row*(96+43),y,minerfSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
case BUILDFACTORY4:
Blt(pBBuf,x+row*(96+43),y,spinmfSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
case BUILDFACTORY5:
Blt(pBBuf,x+row*(96+43),y,smeltfSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
default:
Blt(pBBuf,x+row*(96+43),y,autofSur,rect,true);
if(tempf.affe_money<0)
PrintText(pBBuf,x+row*(96+43),y+98,"(亏损)");
row++;
break;
}//switch tempf.kind根据kind作图
// break;//退出while
}//if找到了
si++;
}//while
}//if(playerFacnum!=0)作工厂图
PrintText(pBBuf,6*32+15,6*32+10,"请选择建筑:");
PrintText(pBBuf,7*32+10,7*32+300,"放弃使用请按Ctrl键退出菜单。");
}
return bandfnum;
}
//购买商店物品
void buyinshop(int playerid)
{
shopshow();
int x=7*32;
int y=x;
Blt(pBBuf,x+120,y+60,choice,GetRect(0,0,28,27),true);
Flip();
bool dochoose=true;//在选择之中
int thechoice=0;
int Num=7;//物品数量
int count=0;//记录所指物品
bool soldout;//某产品出售完
while(dochoose==true)
{
soldout=false;
PressKey(VK_CONTROL,1);//吸收Ctrl
PressKey(VK_RETURN,1);
PressKey(VK_UP,1);
PressKey(VK_DOWN,1);
if( GetAsyncKeyState(VK_RIGHT) ) //下一项
{
PressKey(VK_RIGHT,1);
thechoice=(thechoice+1)%Num;
count=(count+1)%Num;
shopshow();//刷新菜单
if(count>3)
{
y=7*32+150;
x=7*32-4*140;
}
else
{
x=7*32;
y=x;
}
Blt(pBBuf,x+120+count*140,y+60,choice,GetRect(0,0,28,27),true);
PlayDirectSound(selectsnd);
Flip();
}
if( GetAsyncKeyState(VK_LEFT) ) //上一项
{
PressKey(VK_LEFT,1);
if( thechoice==0 )
{
thechoice=Num-1;
count=Num-1;
}
else
{
thechoice--;
count--;
}
if(count>3)
{
y=7*32+150;
x=7*32-4*140;
}
else
{
x=7*32;
y=x;
}
shopshow();//刷新菜单
Blt(pBBuf,x+120+count*140,y+60,choice,GetRect(0,0,28,27),true);
PlayDirectSound(selectsnd);
Flip();
}
if( GetAsyncKeyState(VK_RETURN) ) //确定
{
MyTool* tool;
PressKey(VK_RETURN,1); //防止连击。
switch(thechoice)
{
case COMPMANAGER:
{
compmanager *cm=new compmanager;
tool=(MyTool*)cm;
if(mygame.cmnum>0 && players[playerid].BuyTools(tool,playerid))
{
MyMenus mymenu(360,260,"pics/menu.fim",280,120,GetRect(0,0,280,120));
char* tchoice[]={"确定"};
PressKey(VK_RETURN,1);
mymenu.ShowtMenu("聘请了企业管理人!",tchoice,1);
mygame.cmnum--;
GL_GamePicShowSilence();
Flip();
return;
}
else if(mygame.cmnum<=0)
{
MyMenus mymenu(360,260,"pics/menu.fim",280,120,GetRect(0,0,280,120));
char* tchoice[]={"确定"};
PressKey(VK_RETURN,1);
mymenu.ShowtMenu("没有企业管理人了!",tchoice,1);
soldout=true;
shopshow();//刷新菜单
Blt(pBBuf,x+120+count*140,y+60,choice,GetRect(0,0,28,27),true);
Flip();
break;
}
}
break;
case PASSPORT:
{
passport *pp=new passport;
tool=(MyTool*)pp;
if(mygame.ppnum>0 && players[playerid].BuyTools(tool,playerid))
{
MyMenus mymenu(360,260,"pics/menu.fim",280,120,GetRect(0,0,280,120));
char* tchoice[]={"确定"};
PressKey(VK_RETURN,1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -