## GameShop
```c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct _prop
{
int id;
char names[50];
double price;
int stock;
char desc[100];
}Prop;
typedef struct _bag
{
int id;
int count;
int max;
int place;
Prop props[6];
}Bag;
typedef struct _player
{
int id;
char name[50];
char password[50];
Bag bag;
double gold;
double sysee;
}Player;
int showpropcount;
int playerscount;
Prop* props;
Player*player;
void InputShop();
void ShowShop();
void InputPlayers();
void ShowPlayers();
void Trade(Player *player, int propid);
int main()
{
system("color 74");
InputShop();
InputPlayers();
printf("\n***********交易前*************");
ShowShop();
ShowPlayers();
printf("\n***********交易后*************");
printf("\n\n");
Trade(&player[0], 3);
Trade(&player[0], 2);
Trade(&player[0], 1);
Trade(&player[1], 3);
Trade(&player[0], 3);
Trade(&player[2], 4);
Trade(&player[3], 1);
Trade(&player[3], 5);
Trade(&player[2], 3);
Trade(&player[1], 5);
ShowShop();
ShowPlayers();
}
void InputShop()
{
static Prop showprop[] = {
{1,"饮血剑",2300,10,"25%的物理吸血"},
{2,"无尽之刃",3200,10,"20%的物理暴击,暴击伤害翻倍"},
{3,"疾步之靴",700,15,"增加25%的移动速度"},
{4,"卢登的回声",2500,7,"给予法术涌动效果,增加法术伤害"},
{5,"亡者的板甲",3000,5,"增加移动速度生命值,5秒内没有攻击则下次攻击额外伤害"}
};
props = showprop;
showpropcount = 5;
}
void ShowShop()
{
int i;
if (props == NULL)
return;
printf("%-5s%-11s%-5s%-6s%-60s\n","编号","名称","单价","库存","装备描述");
for (i = 0; i < showpropcount; i++)
{
printf("%-5d%-11s%-5.0lf%-6d%-60s\n", props[i].id,props[i].names,props[i].price,props[i].stock,props[i].desc);
}
}
void InputPlayers()
{
static Player players[] = {
{1,"Fiker","123456789",.bag.id = 1,.bag.max = 6, .gold = 7000,.bag.count = 0,.bag.place = 6},
{2,"PDD","135790",.bag.id = 1,.bag.max = 6, .gold = 6000,.bag.count = 0,.bag.place = 6},
{3,"Doinb","246810",.bag.id = 1,.bag.max = 6, .gold=6000,.bag.count = 0,.bag.place = 6},
{4,"Uzi","987654321",.bag.id = 1,.bag.max = 6, .gold = 7000,.bag.count = 0,.bag.place = 6}
};
player = players;
playerscount = sizeof(players) / sizeof(Player);
}
void ShowPlayers()
{
int i,j;
if (player == NULL)
return;
printf("%-10s%-8s%-13s%-10s%-20s%-14s%-14s%-10s%-10s\n","玩家编号", "用户名", "密码", "背包编号", "背包剩余道具数量", "背包位置总数","背包剩余位置","金币数量","点券数量");
for (i = 0; i < playerscount; i++)
{
printf("%-10d%-8s%-13s%-10d%-20d%-14d%-14d%-10.0lf%-10.0lf\n", player[i].id, player[i].name, player[i].password, player[i].bag.id, player[i].bag.count,
player[i].bag.max,player[i].bag.place,player[i].gold,player[i].sysee);
for (j = 0; j < player[i].bag.max - player[i].bag.place; j++)
{
printf("%s\t%d\n", player[i].bag.props[j].names, player[i].bag.props[j].stock);
}
printf("\n");
}
}
void Trade(Player* player, int propid)
{
int i;
Prop* tradeprop;
tradeprop = NULL;
if (propid > 5 || propid < 1)
{
printf("你输入的装备有误.\n");
exit(0);
}
for (i = 0; i < showpropcount; i++)
{
if (propid == props[i].id)
{
tradeprop = &props[i];
break;
}
}
if (tradeprop->stock <= 0)
{
printf("该道具库存不足.\n\n");
return;
}
if ((player->bag.max - player->bag.count) < 1)
{
printf("%s你的背包已满,请清理后再买.\n\n",player->name);
return;
}
if (player->gold < tradeprop->price)
{
printf("你的金币不足.\n\n");
return;
}
tradeprop->stock--;
player->gold -= tradeprop->price;
for (i = 0; i < player->bag.max; i++)
{
if (propid == player->bag.props[i].id)
{
player->bag.props[i].stock++;
player->bag.count++;
break;
}
if (i == player->bag.count)
{
int index = player->bag.count;
player->bag.props[index].id = tradeprop->id;
strcpy(player->bag.props[index].names, tradeprop->names);
player->bag.props[index].stock = 1;
strcpy(player->bag.props[index].desc, tradeprop->desc);
player->bag.count++;
player->bag.place--;
break;
}
}
}
Trade(&player[0], 3);
Trade(&player[0], 2);
Trade(&player[0], 1);
Trade(&player[1], 3);
Trade(&player[0], 3);
Trade(&player[2], 4);
Trade(&player[3], 1);
Trade(&player[3], 5);
Trade(&player[2], 3);
Trade(&player[1], 5);
以上main以内为购买装备部分,暂时只可程序内购买。。。