모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    아재개그제조기님의
    개인페이지입니다
    가입 : 15-05-23
    방문 : 549회
    닉네임변경 이력
    회원차단
    회원차단해제
    게시물ID : programmer_20221
    작성자 : 뒷북을올려라
    추천 : 0
    조회수 : 616
    IP : 96.39.***.214
    댓글 : 2개
    등록시간 : 2017/04/07 08:47:17
    http://todayhumor.com/?programmer_20221 모바일
    간단한 게임 c 로 만들어보고있는데 게속 꼬이네요..
    옵션
    • 본인삭제금지
    #include <stdio.h>
    #include <cs50.h>
    #include <string.h>

    void draw(int get[]);
    bool indexOfRight(int index, int array[]);
    bool indexOfLeft(int index, int array[]);
    bool indexOfMid(int index, int array[]);
    void move(int number, int index[]);
    bool check(int array[]);



    일단 제가 그 그림맞추기게임같은거있잖아요.. 예를들어 판이있으면

    1 3 2
    4 7 6
    5 8  

    이렇게있으면 빈칸으로 숫자를 한번에 하나씩 움직여서 

    1 2 3
    4 5 6
    7 8

    이렇게 만들면 이기는 게임을 만들어보려고 계속 하고있는데요... 

    대충 알고리등ㅁ을 어떻게 짰냐면요 

    index[]라는 array를 만들어서 
    value를 입력하면 몇번째 index에 있는지 알려주게 지정했어요. 

    예를 들면 
    1 2 3
    4 5 6
    7 8 이렇게 있으면 

    index[1] == 0; 
    index[7] == 6;
    이렇게요. 

    그다음에
    매 턴마다 
    판을 프린트해주고 그다음에 뭔 숫자를 옮기고 싶냐고 물어봤어요 . 
    그리고 그 숫자가 빈칸옆에 있는지 체크하고 
    빈칸옆에있다면 빈칸의 index포인트랑 숫자의 index포인트를 바꿔치기했어요. move function에서요. 

    근데 이게 되게 이상한게 

    예를들어 (빈칸을 0이라 할께요)
    1 2 3
    4 5 6
    7 8 0 이렇게 있다면 

    6을 입력하면 

    1 2 3 
    4 5 0
    7 8 6 이렇게 바로 바뀝니다

    근데 여기서 5를 입력하면   

    1 2 3 
    4 5 0
    7 8 6 이렇게 그대로 있어요. 

    1 2 3
    4 5 6
    7 8 0 여기서 8을 입력해도

    1 2 3
    4 5 6
    7 8 0 이렇게 그대로 있고요. 


    consistent 하게 이상하다면 첨부터 다 뜯어고쳐보겠는데 

    세로로는 잘 바뀌는데 가로로는 안바뀌니 미치겠네요.. 

    몇시간째 혼자 끙끙대다가 올려봐요.. 

    스크린샷 2017-04-06 오후 7.43.33.png


    중간중간에 printf넣어서 체크해 봤는데요

    이렇게 1을 움직이려할때는 인덱스가 move funciton에선 바뀌었다가 다시 돌아와요 draw function이 실행될때는.
    근데 3을 움직일때에는 인덱스가 move function에서 바뀌고 draw function에서도 그대로있어요.. 
    어떻게된거죠 ㅠㅠ 


    int main(void){
        int index[9] = {8, 7, 6, 5, 4, 3, 2, 1, 0};
        
        while(!check(index)){
            draw(index);
            printf("What do you wanna move?");
            int number = get_int();
            move(number, index);
        }
    }

    // 판을 시작할때마다 프린트해주는 function
    void draw(int index[]){
        
        int gridPlane[9];
        for(int n=0; n<9; n++){
            gridPlane[index[n]] = n;
        }
        for(int i=0; i<3; i++){
            for(int j=0; j<3; j++){
                printf("%i ",gridPlane[j+(i*3)]);
            }
            printf("\n");
        }
    }


    // 판이 있으면 왼쪽 3개가 빈 공간 근처인지 체크하는 펑션
    bool indexOfLeft(int index, int array[]){
        if(array[index]-1 == array[0] || array[index]+3==array[0] || array[index]-3 ==array[0]){
            return true;
        }
        else
            return false;
    }

    // 올느쪽 3개가 빈 공간 근처인지 체크하는 펑션
    bool indexOfRight(int index, int array[]){
        if(array[index]-1 == array[0] || array[index]+3==array[0] || array[index]-3 == array[0]){
            return true;
        }
        else
            return false;
    }

    // 중간 3개가 빈공간 근처인지 체크하는 펑션
    bool indexOfMid(int index, int array[]){
        if(array[index]-1 == array[0] || array[index]+3==array[0] || array[index]-3 == array[0] || array[index]+1 == array[0])
            return true;
        else
            return false;
    }

    // 빈 공간이랑 숫자랑 자리 바꿔치기한느 펑션

    void move(int number, int index[]){
        if(index[number] == 0 || index[number] == 3 || index[number] == 6)
        {
            if(indexOfLeft(number, index)){
                int temp = index[number];
                index[number] = index[0];
                index[0] = temp;
            }
            else
                printf("you can't do that \n");
        }
        
        if(index[number] == 1 || index[number] == 4 || index[number] == 7)
        {
            if(indexOfMid(number,index)){
                int temp = index[number];
                index[number] = index[0];
                index[0] = temp;
                
                printf("%i index[0] in move \n", index[0]);
                printf("%i index[1] in move \n", index[1]);
            }
            else
                printf("you can't do that\n");
        }
        
        if(index[number] == 2 || index[number] == 5 || index[number] == 8)
        {
            if(indexOfMid(number,index)){
                int temp = index[number];
                index[number] = index[0];
                index[0] = temp;
            }
            else
                printf("you can't do that\n");
        }
    }


    // order가 다 맞는지 체크하는 펑션

    bool check(int array[]){
        for(int i=0; i<8; i++){
            if(array[i] != i+1){
                return false;
            }
        }
        return true;
    }

    이 게시물을 추천한 분들의 목록입니다.
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    25
    서울대 총학을 욕하는게 아니라 그냥 서울대가 아니꼬운거잖아요 본인삭제금지 아재개그제조기 19/11/11 12:11 172 0
    24
    현재 시사글과 유머게시판의 상황에 대하여 [283] 아재개그제조기 19/04/07 17:03 1190 19/17
    23
    버스알림이) 오유저님들의 성원에 힘입어 업데이트를 좀 해보았습니다! [6] 아재개그제조기 18/12/16 20:44 787 18
    22
    버스타고 다니시는 분들을 위해 앱을 하나 만들어봤어요! [3] 창작글 아재개그제조기 18/11/04 10:03 1466 28
    21
    ios EKEvent 잘아시는분들 질문드려요 ㅠㅠㅠ [1] 본인삭제금지 아재개그제조기 18/05/30 18:12 46 0
    20
    xcode 달력 event list 만드는데 어떻게 하는게 좋을까요.. [5] 본인삭제금지 아재개그제조기 18/05/23 16:22 61 0
    19
    맥북 이거 리퍼로 살까하는데 어떤가요? [10] 아재개그제조기 18/03/26 12:46 113 0
    18
    pip를 사용해서 virtualenv로 어떻게 project를실행하나요? [2] 아재개그제조기 18/02/05 09:10 71 0
    17
    virtualenv 설치하려다가 망했어요.. 제발 도와주세요 ㅠㅠㅠㅠ [4] 본인삭제금지 아재개그제조기 18/01/31 16:38 56 0
    16
    갑자기 web development 쪽에 참여하게됬는데 뭘공부해할까요.. [10] 아재개그제조기 18/01/31 15:30 74 0
    15
    P(A|C) > P(A|B) * P(B|C) 라고 할수있나요? [8] 아재개그제조기 17/12/03 08:08 101 1
    13
    꼬추털같은머리 관리법좀요..!! [11] 본인삭제금지 건강의요정 17/06/03 14:50 357 4
    12
    지드래곤이 바쁜 이유.jpg [3] 건강의요정 17/05/30 02:43 913 13
    11
    진화론에 질문 몇가지 있습니다! [9] 건강의요정 17/05/21 01:37 96 0
    10
    XCode Tap Gesture 제발 도와주세요.. ㅠ내일까지 과제인데ㅠ [3] 본인삭제금지 뒷북을올려라 17/05/10 11:40 39 1
    간단한 게임 c 로 만들어보고있는데 게속 꼬이네요.. [3] 본인삭제금지 뒷북을올려라 17/04/07 08:47 83 0
    8
    페루+볼리비아로 여행갈려 하는데요.. [3] 본인삭제금지 뒷북을올려라 17/02/21 11:35 28 1
    7
    통계학 잘아시는분들 도와주세요.. ㅠㅠ [17] 본인삭제금지 뒷북을올려라 17/02/10 06:15 117 1
    6
    자바 애플릿좀 도와주세요..; (본삭금) 본인삭제금지 뒷북을올려라 16/12/28 17:06 41 0
    4
    (프로그램 R) 이거 코딩하는법좀 도와주세요 .... [4] 본인삭제금지 뒷북을올려라 16/07/06 01:10 68 0
    3
    식물의 커뮤니케이션에 대해 리서치를 해보려하는데. [5] 본인삭제금지 뒷북을올려라 16/02/12 10:24 53 0
    1
    2v 지오데식 돔의 각도를 구해야하는데.. [4] 창작글 뒷북을올려라 15/05/23 03:23 39 0
    [1]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈