Browse Source

added sellItem to shop in game (main)

remotes/origin/navigation
KRUGSON 2 years ago
parent
commit
a926b7aec1
  1. 12
      src/c/main.c
  2. 6
      src/c/player.c
  3. 143
      src/c/shop.c
  4. 3
      src/c/shop.h

12
src/c/main.c

@ -41,6 +41,7 @@ int main()
{ {
// define variables // define variables
actualPlayer.id = 1; actualPlayer.id = 1;
actualPlayer.wallet = 100;
char userInput[20]; // maximum defined user input length char userInput[20]; // maximum defined user input length
gameRunning = 1; gameRunning = 1;
@ -138,10 +139,15 @@ void processInput(char userInput[20])
Room actualRoom = map[playerPosition]; Room actualRoom = map[playerPosition];
if (actualRoom.shopAvailable == 1) if (actualRoom.shopAvailable == 1)
{ {
int result = openShop(availableItems); // result > 0 -> integer = index of item OR result = 0 -> cancel
if (result > 0)
int *result = malloc (sizeof (int) * 2);
result = openShop(availableItems, actualPlayer); // result > 0 -> integer = index of item OR result = 0 -> cancel
if (result[0] == 0)
{ {
actualPlayer = addItemToInventory(availableItems, result, actualPlayer);
actualPlayer = buyItem(availableItems, result[1], actualPlayer);
}
else if (result[0] == 1)
{
actualPlayer = sellItem(result[1], actualPlayer);
} }
} }
else else

6
src/c/player.c

@ -79,7 +79,7 @@ Player buyItem(Item *availableItems, int itemIndex, Player actualPlayer)
{ {
actualPlayer = addItemToInventory(availableItems, itemIndex, actualPlayer); actualPlayer = addItemToInventory(availableItems, itemIndex, actualPlayer);
actualPlayer = removeMoneyFromPlayer(actualPlayer, itemPrice); actualPlayer = removeMoneyFromPlayer(actualPlayer, itemPrice);
printf("You bought item for %d$! Your balance is now: %d$\n", itemPrice, actualPlayer.wallet);
printf("You bought item[%d] for %d$! \nYour balance is now: %d$\n", itemIndex, itemPrice, actualPlayer.wallet);
return actualPlayer; return actualPlayer;
} }
else else
@ -91,9 +91,11 @@ Player buyItem(Item *availableItems, int itemIndex, Player actualPlayer)
Player sellItem(int itemIndex, Player actualPlayer) Player sellItem(int itemIndex, Player actualPlayer)
{ {
int priceItemSell = actualPlayer.itemInventory[itemIndex].price;
actualPlayer = addMoneyToPlayer(actualPlayer, actualPlayer.itemInventory[itemIndex].price / 2); actualPlayer = addMoneyToPlayer(actualPlayer, actualPlayer.itemInventory[itemIndex].price / 2);
printf("Item has been sold for 50%% of the purchase price (purchase price: %d$)! \nYour balance is now: %d$\n", priceItemSell, actualPlayer.wallet);
actualPlayer = removeItemFromInventory(itemIndex, actualPlayer); actualPlayer = removeItemFromInventory(itemIndex, actualPlayer);
printf("Item has been sold! Your balance is now: %d$\n", actualPlayer.wallet);
return actualPlayer; return actualPlayer;
} }

143
src/c/shop.c

@ -2,48 +2,143 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <stdbool.h> #include <stdbool.h>
#include <ctype.h>
#include "shop.h" #include "shop.h"
#include "player.h"
int openShop(Item *availableItems)
int *openShop(Item *availableItems, Player actualPlayer)
{ {
int userInput;
int mode = 0;
int *x = malloc(sizeof(int) * 2);
int userModeInput;
fflush(stdout); fflush(stdout);
bool shopIsOpen = 1;
while (shopIsOpen == 1)
bool selectMode = 1;
while (selectMode == 1)
{ {
printf("*** SHOP-Items *** \n\n");
// printf("%-5s %-30s %5s\n", "Index", "Name", "Price");
for (int i = 0; i < 6; i++)
printf("Please type '0' for buy or '1' to sell items!\n");
while (scanf(" %d", &userModeInput) != 1)
{ {
printf("%-5d %-40s %5d$\n", availableItems[i].id, availableItems[i].itemName, availableItems[i].price);
printf("Invalid [index]. Please try again: ");
fflush(stdout);
} }
printf("\n-> to buy items type '[index of item]' \n-> write '0' to quit the shop'\n\n");
while (scanf("%d", &userInput) != 1)
if (userModeInput > 1 || userModeInput < 0)
{ {
printf("Invalid [index]. Please try again: "); printf("Invalid [index]. Please try again: ");
fflush(stdout);
} }
if (userInput > 0)
else if (userModeInput == 0)
{
mode = 0;
selectMode = 0;
}
else if (userModeInput == 1)
{ {
return userInput;
// BUY ITEM added later -> addItemToInventory(userInput);
mode = 1;
selectMode = 0;
} }
else if (userInput == 0)
}
int userInput;
fflush(stdout);
bool shopIsOpen = 1;
if (mode == 0)
{
while (shopIsOpen == 1)
{ {
shopIsOpen = 0;
printf("Enjoy your items, have a great day!\n");
return 0;
printf("*** SHOP-Items *** \n\n");
// printf("%-5s %-30s %5s\n", "Index", "Name", "Price");
for (int i = 0; i < 6; i++)
{
printf("%-5d %-40s %5d$\n", availableItems[i].id, availableItems[i].itemName, availableItems[i].price);
}
printf("\n-> to buy items type '[index of item]' \n-> write '0' to quit the shop'\n\n");
while (scanf(" %d", &userInput) != 1)
{
printf("Invalid [index]. Please try again: ");
fflush(stdout);
}
if (userInput > 0)
{
x[0] = mode;
x[1] = userInput;
return x;
// BUY ITEM added later -> addItemToInventory(userInput);
}
else if (userInput == 0)
{
shopIsOpen = 0;
printf("Enjoy your items, have a great day!\n");
x[0] = -1;
x[1] = -1;
return x;
}
else
{
printf("Invalid [index]. Please try again: ");
}
} }
else
}
else if (mode == 1)
{
while (shopIsOpen == 1)
{ {
printf("Invalid [index]. Please try again: ");
if (actualPlayer.itemCounter > 0)
{
printf("*** Your inventory *** \n\n");
// printf("%-5s %-30s %5s\n", "Index", "Name", "Price");
for (int i = 0; i < actualPlayer.itemCounter; i++)
{
printf("%-5d %-40s %5d$\n", i+1, actualPlayer.itemInventory[i].itemName, actualPlayer.itemInventory[i].price);
}
printf("\n-> to sell items type '[index of item]' \n-> write '0' to quit the shop'\n\n");
while (scanf(" %d", &userInput) != 1)
{
printf("Invalid [index]. Please try again: ");
fflush(stdout);
}
if (userInput > 0)
{
x[0] = mode;
x[1] = userInput-1; //index begin on 1 because we will cancel with 0
return x;
// BUY ITEM added later -> addItemToInventory(userInput);
}
else if (userInput == 0)
{
shopIsOpen = 0;
printf("Enjoy your money, have a great day!\n");
x[0] = -1;
x[1] = -1;
return x;
}
else
{
printf("Invalid [index]. Please try again: ");
}
}
else
{
shopIsOpen = 0;
printf("*** Your inventory is empty *** \n\n");
x[0] = -1;
x[1] = -1;
return x;
}
} }
} }
return 0;
x[0] = -1;
return x;
} }

3
src/c/shop.h

@ -2,7 +2,8 @@
#define SHOP_H #define SHOP_H
#include "items.h" #include "items.h"
#include "player.h"
int openShop(Item *availableItems);
int *openShop(Item *availableItems, Player actualPlayer);
#endif #endif
Loading…
Cancel
Save