Back to project.

Raw source file available here .

#include <ncurses.h>
#include <unistd.h>
#include <stdio.h>
#include "tamagotchi.h"
#include "ui.h"

int main() {
// Open a log file for debugging
FILE *log_file = fopen("streamii.log", "w");
if (!log_file) {
perror("Failed to open log file");
return 1;
}

// Log start of the game
fprintf(log_file, "Streamii game started\n");
fflush(log_file);

// Initialize Tamagotchi
Tamagotchi streamii;
init_tamagotchi(&streamii);
fprintf(log_file, "Streamii initialized\n");
fflush(log_file);

// Initialize UI
init_ui();
fprintf(log_file, "UI initialized\n");
fflush(log_file);

// Game loop
while (streamii.is_alive) {
// Update Tamagotchi stats
update_tamagotchi_stats(&streamii);
fprintf(log_file, "Updated Streamii stats\n");
fflush(log_file);

// Clear and redraw screen
clear();

// Draw Tamagotchi
draw_tamagotchi(&streamii);

// Draw stats
draw_stats(&streamii);

// Display menu
display_menu();

// Refresh screen
refresh();

// Get user input
int ch = get_user_input();
fprintf(log_file, "User input received: %d\n", ch);
fflush(log_file);

// Handle user input
switch (ch) {
case KEY_F(1): // F1 to feed
feed_tamagotchi(&streamii);
fprintf(log_file, "Fed Streamii\n");
break;
case KEY_F(2): // F2 to sleep
sleep_tamagotchi(&streamii);
fprintf(log_file, "Made Streamii sleep\n");
break;
case KEY_F(3): // F3 to play
play_with_tamagotchi(&streamii);
fprintf(log_file, "Played with Streamii\n");
break;
case KEY_F(4): // F4 to clean
clean_tamagotchi(&streamii);
fprintf(log_file, "Cleaned Streamii\n");
break;
case 'q': // Q to quit
case 'Q':
streamii.is_alive = 0;
fprintf(log_file, "User quit the game\n");
break;
}

// Small delay to control game speed
usleep(200000); // 200ms
}

// Show game over screen
show_game_over();
fprintf(log_file, "Game over\n");

// Cleanup
cleanup_ui();
fclose(log_file);

return 0;
}