• 본 게시판은 수업시간에 학생들 실습을 위한 게시판입니다.
  • 본 게시판에 올라와 있는 프로그램은 대부분 올바르지 않은 프로그램입니다.
        윤형식
        야구게임



    #include <stdio.h>

    #include <stdlib.h>

    #include <time.h>

     

    #define DIGIT_COUNT 4

    #define MAX_DIGIT 10

     

    void shuffleArray(int *arr, int length) {

        for (int i = 0; i < length; ++i) {

            int randomIndex = rand() % length;

            // Swap elements at i and randomIndex

            int temp = arr[i];

            arr[i] = arr[randomIndex];

            arr[randomIndex] = temp;

        }

    }

     

    void generateRandomNumbers(int *numbers) {

        int comp[MAX_DIGIT] = {0}; // Initialize array with all zeros

     

        // Fill comp array with 1 at randomly selected indices

        for (int i = 0; i < DIGIT_COUNT; ++i) {

            int randomIndex;

            do {

                randomIndex = rand() % MAX_DIGIT;

            } while (comp[randomIndex] == 1);

     

            comp[randomIndex] = 1;

        }

     

        // Select numbers from comp array (indices with value 1)

        int index = 0;

        for (int i = 0; i < MAX_DIGIT; ++i) {

            if (comp[i] == 1) {

                numbers[index++] = i;

            }

        }

     

        // Shuffle the array to randomize the order

        shuffleArray(numbers, DIGIT_COUNT);

    }

     

    int contains(int *arr, int length, int num) {

        for (int i = 0; i < length; ++i) {

            if (arr[i] == num) {

                return 1; // True

            }

        }

        return 0; // False

    }

     

    void getPlayerInput(int *numbers) {

        printf("Enter %d single-digit numbers separated by space: ", DIGIT_COUNT);

        for (int i = 0; i < DIGIT_COUNT; ++i) {

            int input;

            while (1) {

                if (scanf("%d", &input) == 1 && input >= 0 && input < MAX_DIGIT && !contains(numbers, i, input)) {

                    numbers[i] = input;

                    break;

                } else {

                    printf("Invalid input. Please enter single-digit numbers that are not repeated.\n");

                    while (getchar() != '\n');  // Clear the input buffer

                }

            }

        }

    }

     

    void evaluateGuess(int *computerNumbers, int *playerNumbers, int *strikes, int *balls) {

        *strikes = 0;

        *balls = 0;

     

        for (int i = 0; i < DIGIT_COUNT; ++i) {

            if (computerNumbers[i] == playerNumbers[i]) {

                (*strikes)++;

            } else if (contains(computerNumbers, DIGIT_COUNT, playerNumbers[i])) {

                (*balls)++;

            }

        }

    }

     

    int main(void) {

        int computerNumbers[DIGIT_COUNT];

        int playerNumbers[DIGIT_COUNT];

        int strikes, balls;

     

        srand((unsigned int)time(NULL));  // Move srand to the beginning of the main function

        generateRandomNumbers(computerNumbers);

        for(int i=0;i<4;i++){

            printf("%d ",computerNumbers[i]);

        }

        

        while (1) {

            getPlayerInput(playerNumbers);

            evaluateGuess(computerNumbers, playerNumbers, &strikes, &balls);

            

            printf("Strikes: %d, Balls: %d\n", strikes, balls);

     

            if (strikes == DIGIT_COUNT) {

                printf("Congratulations! You've guessed the numbers.\n");

                printf("Starting a new game.\n");

            } else {

                printf("Try again.\n");

            }

     

            printf("Enter -1 to exit or any other number to continue: ");

            int choice;

            scanf("%d", &choice);

     

            if (choice == -1) {

                printf("Exiting the game.\n");

                break;

            }

        }

     

        return 0;

    }

      등록일 : 2023-11-28 [14:46] 조회 : 73 다운 : 0   
     
    △ 이전글asdff
    ▽ 다음글ddd
    학생실습 게시판
    번호 제 목 이름 조회 등록일
    95 조건문 도전과제1 프로그래밍언어 최현우 24 04-12
    94 4월12일 세수 비교 실습 프로그래밍언어 윤영민 32 04-12
    93 도전문제 프로그래밍언어 이윤환 34 04-12
    92 asdff 비공개 프로그래밍언어 윤형식 75 11-28
    91 야구게임 프로그래밍언어 윤형식 73 11-28
    90 ddd 프로그래밍언어 윤형식 128 10-31
    89 실습2 프로그래밍언어 서성은 443 03-16
    88 └❶ 실습2 프로그래밍언어 정성훈 384 03-16
    87 야구 프로그래밍언어 백현민 625 10-31
    86 거꾸로 프로그래밍언어 김경회 627 09-26
    85 ㅁㄴㅇ 프로그래밍언어 조문근 752 06-13
    84 로또 프로그래밍언어 김상우 772 05-30
    83 함수 프로그래밍언어 김경회 851 05-23
    82 proto 프로그래밍언어 이현식 725 05-23
    81 함수 프로그래밍언어 박병민 714 05-23

    [1][2][3][4][5][6][7]