프로그래밍

 3198, 1/160 회원가입  로그인  
   dokito
   소수 판별 게임인데 도움좀 주세요

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3394 [복사]


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>

int main(){
        int player = 10;
        int monster = 10;
        unsigned int num = 2u;
        int num2; //몬스터가 내가 부른 숫자보다 더 크게 말하기 위함
        int i=0;
        int random;
        int rush;//공격수
        int k; //소수인지 나눠보는 숫자
        int TF=1; //참거짓 판별자


        srand((unsigned)time(NULL));
        
        printf("용사는 던전을 돌다 PN monster를 만났다.\n");
        printf("이 괴물은 괴물이 말하는 다음 소수를 정확하게 입력해야만 물리칠수 있다.\n");
        
        while(player > 0 && monster > 0){
        
        random = rand()%3;

                for(i = 0; i <= random; i++){
                        for(k=2;k<num;k++){
                                if(num%k==0){
                                        TF=0;
                                break;
                                }}
                        if(num==k)
                                printf("\"%u\"\n",num);
                        num++;
                        num2 = num;
                
                }
                printf("용사는 말했다,\n<소수를 입력하시오.>\n");
                scanf("%d",&rush);
                if(rush>num2){
                        for(k=2;k<rush;k++){
                        if(rush%k==0){
                                break;}
                        }
                        if(rush==k){
                        monster--;
                        printf("적은 데미지를 입었다.\n");
                        
                        }
                        
                }else{
                        player--;
                        printf("용사는 데미지를 입었다.\n");
                        
                }

                printf("PLAYER:%d        MONSTER:%d\n",player,monster);
        }

        if(player == 0)
                printf("패배하였습니다.\n");
        else
                printf("승리하였습니다\n");


        return 0;
}


첨에 괴물이 2 3을 말하면 저는 5를 말하고 그럼 괴물이 7을 말해야하는데 또 5를 말합니다
도움받고싶습니다

  Hit : 4307     Date : 2012/04/14 04:01



    
minwoo1989 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>

int main(){
int player = 10;
int monster = 10;
unsigned int num = 2u;
int num2; //몬스터가 내가 부른 숫자보다 더 크게 말하기 위함
int i=0;
int random;
int rush;//공격수
int k; //소수인지 나눠보는 숫자
int TF=1; //참거짓 판별자

srand((unsigned)time(NULL));

printf("용사는 던전을 돌다 PN monster를 만났다.\n");
printf("이 괴물은 괴물이 말하는 다음 소수를 정확하게 입력해야만 물리칠수 있다.\n");

while(player > 0 && monster > 0){

random = rand()%3;

for (i = 0; i <= random; i++) {
for (k=2;k<num;k++) {
if (num%k==0) {
TF=0; // 빼도 될 거 같군요
break;
}
}
}

// 아래 if문을 for문 밖으로 빼고 else 부분 추가시켰습니다.

if(num==k)
printf("\n\"%u\"\n",num);
else {
num++;
continue;
}

num2 = num; // 이 부분 순서 바꿔주었구요
num++;

printf("용사는 말했다,\n<소수를 입력하시오.>\n");
scanf("%d",&rush);

if (rush>num2) {
for (k=2;k<rush;k++) {
if (rush%k==0) {
break;
}
}

if(rush==k) {
monster--;
printf("적은 데미지를 입었다.\n");
} else { // 틀렸을 때 처리가 없어서 추가시켰습니다.
printf("틀렸군 바보같은 용사!\n");
player--;
printf("용사는 데미지를 입었다.\n");
}
}else{
player--;
printf("용사는 데미지를 입었다.\n");
}

printf("PLAYER:%d MONSTER:%d\n",player,monster);

num = rush + 1; // 추가했습니다. 현재 입력받은 수보다 1 큰 수를 num에 넣어주면 괴물이 더 큰 수를 부르겠죠?
}

if(player == 0)
printf("패배하였습니다.\n");
else
printf("승리하였습니다\n");


return 0;
}

최대한 원본 코드 유지해서 고쳐봤습니다.

괴물이 말한 수 다음 소수보다 큰 소수를 말해도 넘어가네요.

그리고 TF는 빼도 되지 않나요? 안쓰이는데..
2012/05/16