「もっと面白くしたい」という工夫がコーディング力を一番伸ばします。
まず基本版を作り、拡張課題で自分なりの工夫を加えてみましょう。
srand(time(NULL)) と rand() % 100 + 1 で1〜100のランダムな数を生成while で正解するまで繰り返す。scanf で予想を読み込む#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { srand((unsigned)time(NULL)); int answer = rand() % 100 + 1; int guess, count = 0; printf("1〜100の数を当ててください!\n"); do { printf("予想> "); scanf("%d", &guess); count++; if (guess > answer) printf("もっと小さいです\n"); else if (guess < answer) printf("もっと大きいです\n"); } while (guess != answer); printf("正解! %d回で当たりました!\n", count); return 0; }
char *hands[] = {"グー","チョキ","パー"};(player - cpu + 3) % 3 が 0=あいこ、1=負け、2=勝ち// 0=グー, 1=チョキ, 2=パー int result = (player - cpu + 3) % 3; if (result == 0) printf("あいこ\n"); else if (result == 2) printf("あなたの勝ち!\n"); else printf("あなたの負け…\n");
char *symbols[] = {"🍒","🍋","🔔","⭐","7"}; 等rand() % 絵柄数 を3回char board[3][3]。空=' ', O='O', X='X'void print_board(char board[3][3]) で罫線付き表示int check_win(char b[3][3], char c) { for (int i = 0; i < 3; i++) { if (b[i][0]==c && b[i][1]==c && b[i][2]==c) return 1; // 横 if (b[0][i]==c && b[1][i]==c && b[2][i]==c) return 1; // 縦 } if (b[0][0]==c && b[1][1]==c && b[2][2]==c) return 1; // 斜め if (b[0][2]==c && b[1][1]==c && b[2][0]==c) return 1; // 斜め return 0; }
char maze[H][W] で '#'=壁、'.'=通路、'P'=プレイヤー、'G'=ゴールstruct Pos { int x, y; };struct Card { int suit; int rank; }; スートと数字char *words[] = {"programming","computer",...};int revealed[MAX] で各文字が開示済みかどうかを記録struct Character { char name[20]; int hp, max_hp, mp, atk, def; };int calc_damage(int atk, int def) 乱数でブレを加えるint mines[H][W](地雷配置) と int visible[H][W](開示状態)termios.h(Linux/Mac)や conio.h(Windows)を使ってノンブロッキング入力を実装する必要があります。まずは「1手ごとに入力を待つ」ターン制バージョンから始めるのがおすすめです。