|
#include <stdlib.h>
|
|
#include "tamagotchi.h"
|
|
|
|
// Initialize Tamagotchi with default stats
|
|
void init_tamagotchi(Tamagotchi *tama) {
|
|
tama->hunger = 50;
|
|
tama->energy = 100;
|
|
tama->happiness = 75;
|
|
tama->cleanliness = 100;
|
|
tama->state = HAPPY;
|
|
tama->age = 0;
|
|
tama->is_alive = 1;
|
|
}
|
|
|
|
// Feed the Tamagotchi
|
|
void feed_tamagotchi(Tamagotchi *tama) {
|
|
if (!tama->is_alive) return;
|
|
|
|
tama->hunger += 20;
|
|
if (tama->hunger > MAX_STAT) tama->hunger = MAX_STAT;
|
|
|
|
tama->cleanliness -= 10;
|
|
if (tama->cleanliness < MIN_STAT) tama->cleanliness = MIN_STAT;
|
|
|
|
tama->happiness += 5;
|
|
if (tama->happiness > MAX_STAT) tama->happiness = MAX_STAT;
|
|
}
|
|
|
|
// Make Tamagotchi sleep
|
|
void sleep_tamagotchi(Tamagotchi *tama) {
|
|
if (!tama->is_alive) return;
|
|
|
|
tama->energy += 30;
|
|
if (tama->energy > MAX_STAT) tama->energy = MAX_STAT;
|
|
|
|
tama->hunger -= 10;
|
|
if (tama->hunger < MIN_STAT) tama->hunger = MIN_STAT;
|
|
}
|
|
|
|
// Play with Tamagotchi
|
|
void play_with_tamagotchi(Tamagotchi *tama) {
|
|
if (!tama->is_alive) return;
|
|
|
|
tama->happiness += 15;
|
|
if (tama->happiness > MAX_STAT) tama->happiness = MAX_STAT;
|
|
|
|
tama->energy -= 15;
|
|
tama->hunger -= 10;
|
|
|
|
if (tama->energy < MIN_STAT) tama->energy = MIN_STAT;
|
|
if (tama->hunger < MIN_STAT) tama->hunger = MIN_STAT;
|
|
}
|
|
|
|
// Clean Tamagotchi
|
|
void clean_tamagotchi(Tamagotchi *tama) {
|
|
if (!tama->is_alive) return;
|
|
|
|
tama->cleanliness += 30;
|
|
if (tama->cleanliness > MAX_STAT) tama->cleanliness = MAX_STAT;
|
|
|
|
tama->happiness += 5;
|
|
if (tama->happiness > MAX_STAT) tama->happiness = MAX_STAT;
|
|
}
|
|
|
|
// Update Tamagotchi stats each game cycle
|
|
void update_tamagotchi_stats(Tamagotchi *tama) {
|
|
if (!tama->is_alive) return;
|
|
|
|
// Gradually decrease stats
|
|
tama->hunger -= 5;
|
|
tama->energy -= 3;
|
|
tama->happiness -= 2;
|
|
tama->cleanliness -= 1;
|
|
tama->age++;
|
|
|
|
// Determine state based on stats
|
|
if (tama->hunger <= 20) tama->state = HUNGRY;
|
|
else if (tama->energy <= 20) tama->state = SLEEPY;
|
|
else if (tama->happiness <= 20) tama->state = BORED;
|
|
else tama->state = HAPPY;
|
|
|
|
// Check if Tamagotchi dies
|
|
if (tama->hunger <= MIN_STAT ||
|
|
tama->energy <= MIN_STAT ||
|
|
tama->happiness <= MIN_STAT) {
|
|
tama->is_alive = 0;
|
|
}
|
|
}
|
|
|
|
// Get facial expression based on current state
|
|
const char* get_tamagotchi_face(Tamagotchi *tama) {
|
|
switch (tama->state) {
|
|
case HAPPY: return "^w^";
|
|
case HUNGRY: return "T_T";
|
|
case SLEEPY: return "~_~";
|
|
case SICK: return "x_x";
|
|
case BORED: return "-_-";
|
|
default: return "o_o";
|
|
}
|
|
} |