🌟 프로그램 14, 난수 발생 함수를 사용하여 컴퓨터와 대전이 가능한 가위바위보 게임 만들기
더보기
💻 C언어를 사용해서 간단한 가위바위보 게임
💻 사용자는 반복적으로 게임을 진행할 수 있으며, 종료 시에는 승/패/무 결과까지 출력
🎮 기능 소개
- 사용자로부터 가위(1), 바위(2), 보(3), 종료(0) 입력 받기
- 컴퓨터는 랜덤하게 가위, 바위, 보 선택
- 승/패/무 조건 비교 및 결과 출력
- 사용자의 누적 승/패/무 전적 출력
📜 전체 코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 게임 결과 출력 함수
void count(int win, int lose, int draw);
// 사용자로부터 입력을 받는 함수
int user_input() {
int user_choice;
while (1) {
// 사용자 입력 요청
printf("\n>>> 가위(1), 바위(2), 보(3), 종료(0) 입력: ");
printf(">> ");
scanf("%d", &user_choice);
// 사용자 입력에 따른 출력 및 반환
switch (user_choice) {
case 1:
printf("사용자는 가위를 냈습니다.\n");
return 1;
case 2:
printf("사용자는 바위를 냈습니다.\n");
return 2;
case 3:
printf("사용자는 보를 냈습니다.\n");
return 3;
case 0:
printf("프로그램을 종료합니다.\n");
return 0;
default:
printf("잘못 입력하셨습니다, 다시 입력해 주세요.\n");
break;
}
}
}
// 컴퓨터의 선택을 랜덤하게 생성하는 함수
int random_number() {
// 1~3 중 랜덤 숫자 생성
int computer_choice = rand() % 3 + 1;
// 컴퓨터 선택 출력
switch (computer_choice) {
case 1:
printf("컴퓨터는 가위를 냈습니다.\n");
break;
case 2:
printf("컴퓨터는 바위를 냈습니다.\n");
break;
case 3:
printf("컴퓨터는 보를 냈습니다.\n");
break;
}
return computer_choice;
}
// 게임 결과 판단 함수
// 반환값: 1(승), 2(패), 3(무)
int result(int user_choice, int computer_choice) {
// 무승부
if (user_choice == computer_choice) {
printf("비겼습니다.\n");
return 3;
// 사용자 승리 조건
} else if ((user_choice == 1 && computer_choice == 3) ||
(user_choice == 2 && computer_choice == 1) ||
(user_choice == 3 && computer_choice == 2)) {
printf("이겼습니다, 축하합니다.\n");
return 1;
// 나머지는 컴퓨터 승리
} else {
printf("졌습니다, 분발하세요.\n");
return 2;
}
}
// 최종 전적 출력 함수
void count(int win, int lose, int draw) {
printf("\n[종합 결과]\n");
printf("> 승 : %d\n", win);
printf("> 패 : %d\n", lose);
printf("> 무 : %d\n", draw);
}
int main() {
srand(time(NULL)); // 난수 초기화 (매번 다른 결과 나오게)
// 전적 저장 변수 초기화
int win = 0;
int lose = 0;
int draw = 0;
while (1) {
int user = user_input(); // 사용자 선택
if (user == 0) break; // 0이면 종료
int computer = random_number(); // 컴퓨터 선택
int outcome = result(user, computer); // 결과 비교
// 결과에 따라 카운트 증가
if (outcome == 1) win++;
else if (outcome == 2) lose++;
else if (outcome == 3) draw++;
}
// 최종 전적 출력
count(win, lose, draw);
return 0;
}
⚠️ 주요 포인트
- srand(time(NULL)): 컴퓨터가 매번 다른 선택을 하도록 시간 기반 난수 초기화.
- rand() % 3 + 1: 1~3 사이 숫자 랜덤 생성 (1: 가위, 2: 바위, 3: 보)
- user_input() 함수에서 사용자가 0을 입력하면 게임이 종료
- 마지막에 count() 함수를 호출해 종합 전적 출력
🧪 실행 예시
>>> 가위(1), 바위(2), 보(3), 종료(0) 입력:
>> 1
사용자는 가위를 냈습니다.
컴퓨터는 보를 냈습니다.
이겼습니다, 축하합니다.
>>> 가위(1), 바위(2), 보(3), 종료(0) 입력:
>> 2
사용자는 바위를 냈습니다.
컴퓨터는 바위를 냈습니다.
비겼습니다.
>>> 가위(1), 바위(2), 보(3), 종료(0) 입력:
>> 0
프로그램을 종료합니다.
[종합 결과]
> 승 : 1
> 패 : 0
> 무 : 1
🌟 프로그램 15, 난수 발생 함수를 사용하여 3개의 숫자를 기반으로 하는 슬롯머신 만들기
더보기
🎰 C언어로 제작한 슬롯머신 게임
🎰 소액 베팅이 가능하고, 숫자 조합에 따라 보상을 받는 간단한 미니게임
🎮 게임 개요
- 사용자로부터 100원 미만의 베팅 금액을 입력받음
- 1~9 사이의 숫자 3개가 무작위로 뽑힘
- 숫자 조합에 따라 1등(777), 2등(3개 일치), 3등(2개 일치), 꽝 결정
- 보상:
- 1등 → 베팅 금액 × 5
- 2등 → 베팅 금액 × 3
- 3등 → 베팅 금액 × 2
- 꽝 → 0
- 게임은 반복 가능하며, 사용자가 종료를 선택할 수 있음
📜 전체 코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 슬롯머신 게임을 실행하는 함수
// money: 사용자가 베팅한 금액
// random_number: 3개의 난수(1~9)를 저장할 배열
int run(int money, int random_number[]) {
int i;
int prize = 0; // 당첨된 금액
srand(time(NULL)); // 현재 시간을 시드로 사용하여 난수 생성 초기화
// 1~9 사이의 정수를 3개 생성하여 배열에 저장
for (i = 0; i < 3; i++) {
random_number[i] = (rand() % 9) + 1;
}
// 생성된 난수 출력
printf(">>> 게임 결과: %d %d %d\n", random_number[0], random_number[1], random_number[2]);
// 당첨 조건 판정
if (random_number[0] == 7 && random_number[1] == 7 && random_number[2] == 7) {
// 1등: 모두 7일 경우
printf(">>> 🎉 1등! 베팅 금액의 5배를 획득!\n");
prize = money * 5;
}
else if (random_number[0] == random_number[1] &&
random_number[1] == random_number[2]) {
// 2등: 모두 같은 숫자일 경우 (단, 모두 7은 제외됨)
printf(">>> 🥈 2등! 베팅 금액의 3배를 획득!\n");
prize = money * 3;
}
else if (random_number[0] == random_number[1] ||
random_number[1] == random_number[2] ||
random_number[0] == random_number[2]) {
// 3등: 동일한 숫자가 2개일 경우
printf(">>> 🥉 3등! 베팅 금액 2배 획득!\n");
prize = money * 2;
}
else {
// 4등: 전혀 일치하지 않음
printf(">>> 😭 4등... 꽝입니다.\n");
prize = 0;
}
// 최종 상금 출력
printf(">>> 금액은 %d원 입니다.\n", prize);
return prize;
}
// 사용자로부터 베팅 금액을 입력받는 함수
// random_number: run 함수에서 사용할 배열을 넘김
int inputMoney(int random_number[]) {
int money = 0;
while (1) {
// 사용자 입력 요청
printf(">>> 베팅 금액을 입력하세요 <100원 미만 가능>: ");
// 정수 입력인지 확인
if (scanf("%d", &money) != 1) {
printf("잘못된 입력입니다. 정수를 입력해주세요.\n");
while (getchar() != '\n'); // 입력 버퍼 비우기
continue;
}
// 100원 이상인 경우 경고
if (money >= 100) {
printf("⚠ 100원 미만만 입력 가능합니다.\n");
continue;
}
// 0원은 허용하지 않음
else if (money == 0) {
printf("⚠ 0원 이상을 입력하여 주세요.\n");
continue;
}
else {
// 입력이 올바르면 게임 실행
run(money, random_number);
break;
}
}
return money;
}
// 메인 함수: 전체 프로그램의 흐름을 제어
int main() {
int choice; // 사용자 선택 (계속할지 여부)
int random_number[3]; // 난수 저장 배열
while (1) {
// 베팅 및 게임 수행
inputMoney(random_number);
// 게임 계속 여부 확인
printf("*계속 하시겠습니까? 예<1> 아니요 <0>: ");
scanf(" %d", &choice);
printf("\n");
// 0 입력 시 종료
if (choice == 0) {
printf("계속하려면 아무 키나 누르십시오... \n");
break;
}
}
return 0;
}
📌 기능 설명
기능 항목 | 설명 |
run( ) | 슬롯머신 숫자 3개 생성, 결과 출력 및 당첨 판별 |
inputMoney( ) | 사용자로부터 베팅 금액 입력받고 유효성 검사 |
main( ) | 게임 흐름 전체 관리, 반복 플레이 처리 |
🧪 실행 예시
>>> 베팅 금액을 입력하세요 <100원 미만 가능>: 99
>>> 게임 결과: 4 9 5
>>> 😭 4등... 꽝입니다.
>>> 금액은 0원 입니다.
*계속 하시겠습니까? 예<1> 아니요 <0>: 1
>>> 베팅 금액을 입력하세요 <100원 미만 가능>: 50
>>> 게임 결과: 7 7 7
>>> 🎉 1등! 베팅 금액의 5배를 획득!
>>> 금액은 250원 입니다.
*계속 하시겠습니까? 예<1> 아니요 <0>: 0
계속하려면 아무 키나 누르십시오...
🌟 프로그램 16, 달력 만들기
더보기
📅 C언어 달력 출력 프로그램
📅 사용자가 연도와 월을 입력하면, 해당 월의 달력을 출력하는 프로그램
📌 프로그램 개요
- 윤년 계산을 통해 2월의 마지막 날짜를 올바르게 처리
- 각 월의 1일이 무슨 요일인지 계산하여 정렬된 달력을 표시
📜 전체 코드
#include <stdio.h>
// 윤년 판별 함수
int yearLeap(int year) {
return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
}
// 해당 월의 마지막 날짜 반환 함수
int lastday(int year, int month) {
int m[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (yearLeap(year)) {
m[1] = 29;
}
return m[month - 1];
}
// 전체 날짜 수 계산 함수 (기준: 1년 1월 1일 → 입력된 날짜까지 총 일수)
int totalday(int year, int month, int day) {
int total = (year - 1) * 365;
total += (year - 1) / 4;
total -= (year - 1) / 100;
total += (year - 1) / 400;
for (int i = 1; i < month; i++) {
total += lastday(year, i);
}
total += day;
return total;
}
// 요일 계산 함수 (0: 일요일 ~ 6: 토요일)
int weekday(int year, int month, int day) {
return totalday(year, month, day) % 7;
}
int main() {
int year, month;
// 사용자 입력
printf("년, 월을 입력하세요 >> ");
scanf("%d %d", &year, &month);
printf("입력하신 날짜는 %d년 %d월 입니다.\n", year, month);
// 달력 출력
printf("\n-----------------------------\n");
printf(" Sun Mon Tue Wed Thu Fri Sat\n");
printf("-----------------------------\n");
int firstDay = weekday(year, month, 1); // 해당 월 1일의 요일
int last = lastday(year, month); // 해당 월의 마지막 날짜
// 공백 출력 (1일 시작 위치 맞추기)
for (int i = 0; i < firstDay; i++) {
printf(" ");
}
// 날짜 출력
for (int i = 1; i <= last; i++) {
printf(" %3d", i);
if ((firstDay + i) % 7 == 0) {
printf("\n");
}
}
return 0;
}
🧩 기능 설명
기능 이름 | 설명 |
yearLeap() | 윤년 여부 판단 (윤년: 2월이 29일) |
lastday() | 입력된 연도와 월에 따른 해당 월의 마지막 날짜 변환 |
totalday() | 기준일(1년 1월 1일)부터 입력 날짜까지의 총 일수 계산 |
weekday() | 입력된 날짜의 요일 계산 (일: 0 ~ 토: 6) |
main() | 연/월 입력 → 1월 요일 계산 → 달력 형식 출력 처리 |
🧪 실행 예시
년, 월을 입력하세요 >> 2025 6
입력하신 날짜는 2025년 6월 입니다.
-----------------------------
Sun Mon Tue Wed Thu Fri Sat
-----------------------------
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
🌟 프로그램 17, 난수 발생 함수를 사용하여 3개의 숫자를 기반으로 하는 숫자 야구 게임 만들기
더보기
⚾ C언어 숫자 야구 게임
⚾ 컴퓨터가 난수 3개 출력, 사용자가 3개를 입력해서 스트라이크, 볼을 맞추는 간단한 미니게임
🎮 게임 개요
- 1부터 9까지의 서로 다른 숫자 3개를 컴퓨터가 무작위로 생성
- 사용자는 숫자 3개를 입력해 컴퓨터의 숫자와 비교
- 결과는 스트라이크(위치까지 일치), 볼(숫자는 맞지만 위치가 다름), 이읏(모두 불일치)로 판정
- 최대 9라운드까지 도전 가능하며, 3 스트라이크가 되면 즉시 승리
📜 전체 코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 서로 다른 난수 3개 생성
void random_number_func(int random_number[]) {
int i, j, temp;
srand(time(NULL));
for (i = 0; i < 3; ) {
temp = rand() % 9 + 1; // 1~9 사이 숫자 생성
int duplicate = 0;
for (j = 0; j < i; j++) {
if (random_number[j] == temp) {
duplicate = 1;
break;
}
}
if (!duplicate) {
random_number[i] = temp;
i++;
}
}
}
int main() {
int random_number[3];
int strike = 0;
int ball = 0;
int round_num = 1;
random_number_func(random_number); // 컴퓨터 숫자 생성
while (round_num <= 9) {
int guess[3];
printf("\n [ %d Round ] \n", round_num);
for (int i = 0; i < 3; i++) {
do {
printf("Enter number 1 ~ 9 : ");
scanf("%d", &guess[i]);
if (guess[i] < 1 || guess[i] > 9) {
printf("⚠️ 1~9 사이의 숫자만 입력하세요!\n");
}
} while (guess[i] < 1 || guess[i] > 9);
}
strike = 0;
ball = 0;
// 판정 로직
for (int i = 0; i < 3; i++) {
if (guess[i] == random_number[i]) {
strike++;
} else {
for (int j = 0; j < 3; j++) {
if (guess[i] == random_number[j]) {
ball++;
}
}
}
}
// 결과 출력
if (strike == 3) {
printf("[ Strike: 3, Ball: 0 ]\n");
printf("======== Win ========\n");
break;
} else if (strike == 0 && ball == 0) {
printf("\033[0;31m [ OUT ]\033[0m\n"); // 빨간색
} else {
printf("\033[0;35m[ Strike: %d, Ball: %d ]\033[0m\n", strike, ball); // 보라색
}
round_num++;
}
if (strike != 3) {
printf("=== Game Over! ===\n");
}
return 0;
}
📌 기능 설명
기능 이름 | 설명 |
random_number_func() | 중복되지 않는 1~9 사이의 숫자 3개를 무작위로 생성 |
main() | 사용자 입력 → 판정 → 반복 → 결과 출력 흐름 전체 관리 |
판정 방식 | - 숫자와 위치가 모두 맞으면 Strike - 숫자만 맞으면 Ball - 모두 틀리면 Out |
🧪 실행 예시
[ 1 Round ]
Enter number 1 ~ 9 : 1
Enter number 1 ~ 9 : 2
Enter number 1 ~ 9 : 3
[ Strike: 1, Ball: 1 ]
[ 2 Round ]
Enter number 1 ~ 9 : 4
Enter number 1 ~ 9 : 5
Enter number 1 ~ 9 : 6
[ OUT ]
[ 3 Round ]
Enter number 1 ~ 9 : 7
Enter number 1 ~ 9 : 2
Enter number 1 ~ 9 : 1
[ Strike: 3, Ball: 0 ]
======== Win ========
🌟 프로그램 18, 로또
더보기
🎲 C언어 로또 티켓 생성기
🎲 3가지 모드로 즐기는 로또 티켓 생성
🎮 프로그램 개요
- 사용자는 1~5개 티켓을 구매할 수 있습니다.
- 각 티켓은 1~45 범위의 서로 다른 숫자 6개로 구성됩니다.
- 세 가지 모드 제공:
- 자동: 컴퓨터가 6개 모두 무작위 생성
- 수동: 사용자가 직접 6개 숫자 입력
- 반자동: 사용자가 일부 입력 후, 나머지는 자동으로 생성
- 현재 날짜와 함께 티켓 번호 출력
📜 전체 코드
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_TICKETS 5
#define MIN_TICKETS 1
// 중복 확인 함수
int is_duplicate(int *arr, int size, int num) {
for (int i = 0; i < size; i++) {
if (arr[i] == num) return 1;
}
return 0;
}
// 자동 번호 생성 함수
void generate_auto_ticket(int *ticket, int start_idx) {
int i = start_idx;
while (i < 6) {
int num = rand() % 45 + 1;
if (!is_duplicate(ticket, i, num)) {
ticket[i++] = num;
}
}
}
// 지급기한 계산용 함수 (현재는 미사용)
void print_due_date() {
time_t t = time(NULL);
struct tm tm = *localtime(&t);
tm.tm_year += 1;
mktime(&tm);
// printf(" 지급기한: %d/%d/%d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
}
int main() {
srand(time(NULL));
int num_tickets, mode;
int lotto_tickets[MAX_TICKETS][6];
printf("ㅡ ㅡ ㅡ ㅡ Lotto ㅡ ㅡ ㅡ ㅡ\n");
// 티켓 수 입력
while (1) {
printf("\nSystem: 몇 개를 구매하시겠어요?(1~5) \n입력 >> ");
if (scanf("%d", &num_tickets) == 1 && num_tickets >= MIN_TICKETS && num_tickets <= MAX_TICKETS)
break;
printf("\n\033[0;31mSystem: (min)1 ~ (max)5개를 입력해주세요.\033[0m\n");
printf("\033[0;31mSystem: 다시 입력해주세요.\033[0m\n");
while (getchar() != '\n');
}
// 모드 선택
while (1) {
printf("\nSystem: 1.자동 2.반자동 3.수동\n입력 >> ");
if (scanf("%d", &mode) == 1 && (mode >= 1 && mode <= 3))
break;
printf("\033[0;31mSystem:잘못된 입력입니다. 다시 선택해주세요.\033[0m\n");
while (getchar() != '\n');
}
// 티켓 생성
for (int i = 0; i < num_tickets; i++) {
int ticket[6] = {0};
int num_count = 0;
if (mode == 1) { // 자동
generate_auto_ticket(ticket, num_count);
}
else if (mode == 3) { // 수동
printf("Lotto %d 수동입력\n", i + 1);
while (num_count < 6) {
printf(">> ");
int num;
if (scanf("%d", &num) == 1 && num >= 1 && num <= 45 && !is_duplicate(ticket, num_count, num)) {
ticket[num_count++] = num;
} else {
printf("\033[0;31mSystem:중복 없이 1 ~ 45 숫자를 입력해주세요.\033[0m\n");
}
while (getchar() != '\n');
}
}
else if (mode == 2) { // 반자동
printf("Lotto %d 반자동입력\n", i + 1);
while (num_count < 6) {
printf(">> 0 입력시 자동으로 채움.\n");
int num;
if (scanf("%d", &num) == 1 && num == 0) {
generate_auto_ticket(ticket, num_count);
break;
}
else if (num >= 1 && num <= 45 && !is_duplicate(ticket, num_count, num)) {
ticket[num_count++] = num;
} else {
printf("중복 없이 1 ~ 45 숫자를 입력해주세요.\n");
}
while (getchar() != '\n');
}
}
// 티켓 저장
for (int j = 0; j < 6; j++) {
lotto_tickets[i][j] = ticket[j];
}
}
// 출력
printf("\n 💰 Lotto 6/45 💰\n");
time_t t = time(NULL);
struct tm tm = *localtime(&t);
printf("\033[0;35m발행일: %d/%d/%d (%s) %d:%d:%d\033[0m\n",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
(const char*[]){"일", "월", "화", "수", "목", "금", "토"}[tm.tm_wday],
tm.tm_hour, tm.tm_min, tm.tm_sec);
print_due_date(); // 지급기한 출력 (현재 주석 처리됨)
for (int i = 0; i < num_tickets; i++) {
for (int j = 0; j < 6; j++) {
if (j < 5)
printf("\033[0;35m|\033[0m %2d ", lotto_tickets[i][j]);
else
printf("\033[0;35m|\033[0m %2d \033[0;35m|\033[0m\n", lotto_tickets[i][j]);
}
}
printf("\033[0;35m  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\033[0m\n");
return 0;
}
📌 기능 설명
기능 이름 | 설명 |
is_duplicate() | 번호 중복 여부 확인 |
generate_auto_ticket() | 자동으로 1~45 중복 없는 번호 6개 생성 (필요 시 부분만 생성) |
print_due_date() | 지급기한(1년 후) 계산 (현재는 출력은 하지 않음) |
main() | 전체 게임 흐름 제어, 모드 선택 및 티켓 출력 |
🧪 실행 예시
ㅡ ㅡ ㅡ ㅡ Lotto ㅡ ㅡ ㅡ ㅡ
System: 몇 개를 구매하시겠어요?(1~5)
입력 >> 2
System: 1.자동 2.반자동 3.수동
입력 >> 1
💰 Lotto 6/45 💰
발행일: 2025/6/21 (토) 13:23:12
| 4 | 18 | 23 | 31 | 37 | 42 |
| 2 | 9 | 14 | 20 | 36 | 45 |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
🌟 프로그램 19, 반짝이는 트리 만들기!
더보기

🎄 C언어 반짝이는 트리 프로그램
✨ 프로그램 개요
- 콘솔 화면에서 트리 모양을 출력하고, 트리 꼭대기의 별(☆, ★)이 1초 간격으로 번갈아 나타나며 반짝이는 애니메이션을 보여줍니다.
- 무한 반복되며 Ctrl + C로 종료할 수 있습니다.
- system("clear") 또는 system("cls")를 사용하여 화면을 지운 뒤 새로운 프레임을 출력합니다.
- sleep(1)을 통해 1초 간격으로 전환됩니다.
📜 전체 코드
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> // 유닉스 계열에서 sleep 사용
// 트리 출력 함수 (☆ 별)
int clear_star() {
printf(" ☆ \n");
for (int i = 1; i <= 4; i++) {
for (int j = 0; j < (6 - i); j++) {
printf(" ");
}
for (int j = 0; j < (2 * i - 1); j++) {
printf("◻️");
}
printf("\n");
}
return 0;
}
// 트리 출력 함수 (★ 별)
int black_star() {
printf(" ★ \n");
for (int i = 1; i <= 4; i++) {
for (int j = 0; j < (6 - i); j++) {
printf(" ");
}
for (int j = 0; j < (2 * i - 1); j++) {
printf("◻️");
}
printf("\n");
}
return 0;
}
// 메인 함수
int main() {
while (1) {
system("clear"); // 화면 지우기 (Windows에선 "cls")
clear_star(); // ☆ 출력
sleep(1); // 1초 대기
system("clear");
black_star(); // ★ 출력
sleep(1); // 1초 대기
}
return 0;
}
🧩 기능 설명
기능 이름 | 기능 설명 |
clear_star() | 트리 위에 ☆를 출력하며 트리 구조를 보여줌 |
black_star() | 트리 위에 ★를 출력하며 반짝이는 효과를 표현 |
main() | 두 가지 별 모양을 번갈아 출력하며 무한 반복 애니메이션 실행 |
🧪 실행 예시 (출력 결과의 예로, 화면이 매번 갱신되며 ★/☆가 깜빡임)
☆
◻️
◻️◻️◻️
◻️◻️◻️◻️◻️
◻️◻️◻️◻️◻️◻️◻️
★
◻️
◻️◻️◻️
◻️◻️◻️◻️◻️
◻️◻️◻️◻️◻️◻️◻️

🌟 프로그램 20, 풍차 만들기
더보기

🌀 C언어 바람개비 애니메이션
🌀 풍차 돌리기
🎮 프로그램 개요
- 터미널(콘솔)에서 바람개비 모양 패턴을 출력하고, 두 가지 모양을 250밀리초 간격으로 번갈아 출력하여
마치 회전하는 바람개비처럼 보이게 만드는 애니메이션 프로그램입니다. - 무한 반복되며, Ctrl + C로 종료합니다.
- usleep(250000)을 이용해 0.25초 간격으로 전환합니다.
📜 전체 코드
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> // usleep 함수 사용
int print_windmill();
int print_windmill_2();
int main() {
while (1) {
system("cls"); // Windows에서는 "cls", mac/Linux는 "clear"
print_windmill();
usleep(250000); // 0.25초 대기
system("cls");
print_windmill_2();
usleep(250000); // 0.25초 대기
}
return 0;
}
// 바람개비 모양 1
int print_windmill() {
int i, j;
for (i = 1; i <= 5; i++) {
for (j = i; j > 0; j--) printf(" ");
printf("\n");
}
for (i = 1; i <= 5; i++) {
for (j = i; j > 0; j--) printf(" ");
for (j = 5 - i; j >= 0; j--) printf(" *");
for (j = 5 - i; j >= 0; j--) printf(" ");
for (j = i; j > 0; j--) printf("* ");
printf("\n");
}
for (i = 1; i <= 5; i++) {
for (j = 5 - i; j >= 0; j--) printf(" *");
for (j = i; j > 0; j--) printf(" ");
for (j = i; j > 0; j--) printf("* ");
for (j = 5 - i; j >= 0; j--) printf(" ");
printf("\n");
}
return 0;
}
// 바람개비 모양 2
int print_windmill_2() {
int i, j;
for (i = 0; i <= 5; i++) {
for (j = 0; j <= 6; j++) printf(" ");
for (j = 0; j <= i - 3; j++) printf("* ");
printf("\n");
}
for (i = 1; i <= 4; i++) {
for (j = 0; j < 4 - i; j++) printf(" ");
for (j = 0; j < 2 * i - 1; j++) printf("* ");
for (j = 0; j < 4 - i; j++) printf(" ");
for (j = 0; j <= 4 - i; j++) printf("* ");
printf("\n");
}
for (i = 0; i <= 4; i++) {
for (j = 0; j < 7 - i; j++) printf(" ");
for (j = 0; j < i; j++) printf("* ");
for (j = 0; j < i; j++) printf(" ");
for (j = 0; j < (4 - i) * 2 - 1; j++) {
if ((4 - i) * 2 - 1 > 0)
printf("* ");
}
printf("\n");
}
for (i = 0; i < 5; i++) {
for (j = 0; j < 4; j++) printf(" ");
for (j = 0; j < i; j++) printf(" ");
for (j = 0; j < 3 - i; j++) printf("* ");
printf("\n");
}
return 0;
}
🧩 기능 설명
함수 이름 | 설명 |
print_windmill() | 바람개비 모양 1 출력 |
print_windmill_2() | 바람개비 모양 2 출력 |
main() | 무한 루프 내에서 두 모양을 교차 출력하여 회전 효과 구현 |
🧪 실행 예시

'C > Task' 카테고리의 다른 글
C언어 간단한 프로그램 1 (0) | 2025.06.17 |
---|---|
C언어 함수 (0) | 2025.06.16 |
C언어 배열 (0) | 2025.06.16 |
C언어 배열 정리 (0) | 2025.06.15 |
06/12 반복구조 (0) | 2025.06.12 |