SteelGolem icon

text adventure game v0.0.3

SteelGolem | PRO | 08/26/15 12:30:54 PM UTC | 0 ⭐ | 507 👁️ | Never ⏰ | []
C |

3.49 KB

|

None

|

0 👍

/

0 👎

// v0.0.3
 
/*
    NEXT:
    - add new rooms: castle grounds, castle fields, castle town
    - add battling
    - add shopping
    - add item use submenu
*/
 
#include <stdio.h> // printf(), getchar(), fflush()
#include <ctype.h> // tolower()
 
#define FALSE 0
#define TRUE 1
 
void pause (void);
 
int game_over = FALSE;
void show_common_commands (void);
void check_common_commands (int command);
 
// room stuff
#define ROOM_ID_THRONE_ROOM 1
int room_id = ROOM_ID_THRONE_ROOM;
int throne_room_chest_empty = FALSE;
void throne_room (void);
 
// item stuff
#define ITEM_ID_TORCH 1
 
// hero stuff
int level = 1;
int hp = 10, max_hp = 10;
int mp = 0, max_mp = 0;
int atk = 1;
int def = 0;
int gold = 0;
int num_items = 0;
int items[8]; // array of IDs representing items
 
int main (void)
{
    while (!game_over)
    {
        switch (room_id)
        {
        case ROOM_ID_THRONE_ROOM:
            throne_room();
            break;
        }
    }
    
    return 0;
}
 
void pause (void)
{
    printf ("=========================== press ENTER to continue ===========================");
    getchar();
    fflush (stdin);
}
 
void show_common_commands (void)
{
    printf ("[m] Magic   [i] Inventory\n");
    printf ("[s] Status  [a] Search area\n");
    printf ("[q] Quit\n");
    printf ("\n");
}
 
void check_common_commands (int command)
{
    int i;
    
    switch (command)
    {
    case 'm':
        printf ("You have no magic spells.\n");
        printf ("\n");
        pause();
        break;
        
    case 'i':
        printf ("You have:\n");
        printf ("\t%d Gold\n", gold);
        if (num_items > 0)
        {
            for (i = 0; i < num_items; i++)
            {
                switch (items[i])
                {
                    case ITEM_ID_TORCH: printf ("\tTorch\n"); break;
                    // TODO: more item types
                }
            }
        }
        else printf ("\tNo items\n");
        printf ("\n");
        pause();
        break;
    
    case 's':
        printf ("Level: %d\n", level);
        printf ("\tHP:  %d/%d\n", hp, max_hp);
        printf ("\tMP:  %d/%d\n", mp, max_mp);
        printf ("\tAtk: %d\n", atk);
        printf ("\tDef: %d\n", def);
        printf ("\n");
        pause();
        break;
        
    case 'q': game_over = TRUE;
    }
}
 
void throne_room (void)
{
    // temporary variables
    int command;
 
    printf ("\n");
    
    // room description
    printf ("You are in the King's throne room.\n");
    printf ("\n");
    
    // room commands
    printf ("[1] Speak to the King\n");
    printf ("[2] Speak to the guards\n");
    printf ("[3] Check treasure chest\n");
    printf ("[4] Leave throne room\n");
    printf ("\n");
    
    // common commands
    show_common_commands();
    
    // user input retrieval
    printf ("Command? ");
    command = tolower (getchar());
    fflush (stdin);
    printf ("\n");
    
    // check room commands
    switch (command)
    {
    case '1':
        printf ("The King says, \"Please, take what we have provided from the treasure chest,\n");
        printf ("and save the kingdom!\"\n");
        printf ("\n");
        pause();
        break;
        
    case '2':
        printf ("One of the guards says, \"The Princess was kidnapped a week ago, and the King\n");
        printf ("is very worried about her... Please! Rescue the princess!\n");
        printf ("\n");
        pause();
        break;
        
    case '3':
        if (throne_room_chest_empty)
        {
            printf ("The chest is empty.\n");
        }
        else
        {
            printf ("You find a Torch and 180 Gold in the chest!\n");
 
            gold += 180;
            items[num_items++] = ITEM_ID_TORCH;
            
            throne_room_chest_empty = TRUE;
        }
        printf ("\n");
        pause();
        break;
    
    case 'a':
        printf ("You don't find anything else.\n");
        printf ("\n");
        pause();
        break;
    }
    
    // check common commands
    check_common_commands (command);
}

Comments