📄 sale.cpp
字号:
//==============物品买卖模块==================
//**************************
//显示物品
void ShowGoodsList(Role Boss, int num, int Flag=BUY)
{
int x=120,y=90;
char temp[200];
char TempChar[200];
MainMove();
rect=GetRect(0,0,420,320);
Blt(lpDDSBack, x-10,y-10, lpDDSStateBar, rect, TRUE);
if( Boss.Goods[num] != ' ' )
{
int N=Boss.Goods[num]-0x30;
if( Flag == SALE ) //卖
{
sprintf(temp,"%16s (值:%d 卖价:%d)", Goods[ Boss.Goods[num]-0x30 ].Name, Goods[N].Money, Goods[N].Money/2);
sprintf(TempChar, "(现金=%4d) CTRL=卖出 ESC=退出", Hero.Money);
}
else //买
{
sprintf(temp,"%16s (价格:%5d)", Goods[ Boss.Goods[num]-0x30 ].Name, Goods[N].Money);
sprintf(TempChar, "(现金=%4d) CTRL=购买 ESC=退出", Hero.Money);
}
PrintText(lpDDSBack,x,y+20, temp, RGB(255,255,255));
sprintf(temp,"经验: %3d 生命:%3d 攻击:%3d 防御:%3d",Goods[N].Exp, Goods[N].Lift, Goods[N].Attack, Goods[N].Defend);
PrintText(lpDDSBack,x+20,y+80, temp, RGB(255,255,255),TRANSPARENT,0, 10);
PrintText(lpDDSBack,x+150,y+80, Goods[N].About, RGB(255,255,0), TRANSPARENT, 0, 22);
}
if( Flag == SALE ) //卖
sprintf(TempChar, "(现金=%4d) CTRL=卖出 ESC=退出", Hero.Money);
else //买
sprintf(TempChar, "(现金=%4d) CTRL=购买 ESC=退出", Hero.Money);
PrintText(lpDDSBack,x+10,y+277, TempChar, RGB(255,255,255));
for(int i=0; i<2; i++)
for(int j=0; j<8; j++)
{
rect=GetRect(0,0,48,48);
Blt(lpDDSBack, x+5+j*49, 270+i*49, lpDDSGoods, rect, TRUE);
int good=Boss.Goods[i*8+j]-0x30;
if( good != ' '-0x30 )
{
rect=GetRect(good%8*48, good/8*48, good%8*48+48, good/8*48+48);
Blt(lpDDSBack, x+5+j*49, 270+i*49, lpDDSGoods, rect, TRUE);
}
if( num == i*8+j )
{
rect=GetRect(48,0,96,48);
Blt(lpDDSBack, x+5+j*49, 270+i*49, lpDDSGoods, rect, TRUE);
}
}
Flip();
}
//****************************
//物品对话框
int SaleDialog(Role Boss, int Flag)
{
int n=0,ret=0;
ShowGoodsList(Boss, n);
PressKey(VK_CONTROL,1);
while( 1 )
{
if( GetAsyncKeyState(VK_RIGHT) ) //下一项
{
PressKey(VK_RIGHT,1);
n=(n+1)%16;
ShowGoodsList(Boss, n, Flag);
}
else if( GetAsyncKeyState(VK_LEFT) ) //上一项
{
PressKey(VK_LEFT,1);
if( n==0 ) n=15;
else n--;
ShowGoodsList(Boss, n, Flag);
}
else if( GetAsyncKeyState(VK_DOWN) ) //下8项
{
PressKey(VK_DOWN,1);
n=(n+8)%16;
ShowGoodsList(Boss, n, Flag);
}
else if( GetAsyncKeyState(VK_UP) ) //上8项
{
PressKey(VK_UP,1);
if( n>=8 ) n-=8;
else n+=8;
ShowGoodsList(Boss, n, Flag);
}
else if( GetAsyncKeyState(VK_CONTROL) ) //确定
{
PressKey(VK_CONTROL,1);
//买东西%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555
if( Flag == BUY )
{
//满了
if( GetGoodsNums(Hero)==16 )
ShowMessage("你已经带满了!",240,460);
//该格有物品
else if( Boss.Goods[n]!=' ' )
{
int NNN=Boss.Goods[n]-0x30;
//买了
if( Hero.Money>=Goods[ NNN ].Money )
{
Boss.Goods[n]=' ';
ShowGoodsList(Boss, n, Flag);
Hero.Money-=Goods[NNN].Money;
AddGoods(Hero, NNN+0x30);
char Temp[100];
int x=120, y=90;
sprintf(Temp,"身上现有的物品:");
PrintText(lpDDSPrimary, x+132, y+10, Temp );
PrintText(lpDDSPrimary, x+130, y+8, Temp, RGB(255,255,0));
sprintf(Temp,"身上现有的物品:");
for(int i=0; i<16; i++)
{
memset(Temp,0,100);
if( Hero.Goods[i] != ' ' )
{
sprintf(Temp,"%s", Goods[ Hero.Goods[i]-0x30 ].Name );//金钱
PrintText(lpDDSPrimary, x+20+i%4*90, y+40+i/4*30, Temp);
PrintText(lpDDSPrimary, x+18+i%4*90, y+38+i/4*30, Temp,RGB(255,255,255));
}
}
ret=1;
ShowMessage("这东西属于你了!", 240, 460);
}
else //钱不够
ShowMessage("兄弟,你的钱不够!", 240, 460);
}
}
//卖东西%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
else if( Flag == SALE )
{
//该格有物品
if( Hero.Goods[n]!=' ' )
{
int NNN=Hero.Goods[n]-0x30;
//卖了
Hero.Goods[n]=' ';
Boss.Goods[n]=' ';
ShowGoodsList(Hero, n, Flag);
Hero.Money+=Goods[NNN].Money/2;
char Temp[100];
int x=120, y=90;
sprintf(Temp,"卖掉[%s]得到:%d",Goods[NNN].Name,Goods[NNN].Money/2);
PrintText(lpDDSPrimary, x+102, y+110, Temp );
PrintText(lpDDSPrimary, x+100, y+108, Temp, RGB(255,255,255));
ret=1;
ShowMessage("这东西归别人了!", 240, 460);
}
else //钱不够
ShowMessage("这儿没有东西!", 240, 460);
}
}
else if( GetAsyncKeyState(VK_ESCAPE) ) //退出
{
PressKey(VK_ESCAPE,1);
return ret;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -