태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Mr. King of mental arithmetic on EMPOS-II - 미스터 암산왕

Posted on 2008.01.01 00:00
Filed Under Project

목차


  1. [기반 모듈]
  2. [세부 모듈]
  3. [COMMENT]

 

[기반 모듈]#

  • Master Include : includes.h
    공용 헤더파일. 기본적으로 아래 소스 파일들은 includes.h 헤더 하나를 포함한다. 많은 헤더파일과 #define 구문, 전역변수, 함수 프로토타입 선언 이 기술되어있다.
  • Library : game_lib.c
    게임 전반적으로 사용될 BMP 로딩, 터치패드 디바이스, LCD 디바이스, 7세그먼트 제어등의 함수와 폰트데이터가 정의되어있다.

  • touch module : touch.c
    메뉴와 게임, 난이도 설정의 터치를 관리.mode 변수로 터치 영역을 구분한다.

  • Main module: main.c
    메인함수는 단순히 메뉴 함수를 호출시키는 구문만 가진다.
    하나의 거대한 루프를 가진다.

[세부 모듈]#

  • Menu module : menu.c
    이미지를 LCD창에 띄운 후 터치패드의 입력을 기다린다.
    해당 터치패드 좌표에 따라서 game_start, howto, difficulty 중 하나를 호출한다.


  • How to use module : howto.c
    사용법에 대한 이미지를 LCD 창에 띄운후 터치패드의 입력을 기다린다.
    터치패드 좌표에 상관없이 입력이 들어오면 LCD 창에 menu 이미지를 띄운 후 돌아간다.
  • Difficulty set module : difficulty.c
    이미지를 LCD 창에 띄운 후 터치패드의 입력을 기다린다.
    해당 터치패드 좌표에 따라서 게임 난이도의 열거형 STAGEx 를 참조하여 전역 변수 difficulty 에 저장된다.

    선택이 완료되면 게임이 시작된다.

  •  Game module :
    game(), game_start() :      game_start.c
    set_susik() : makeproblem.c , in_to_post.h

  • game_start 함수 진입
    1. difficulty 모듈에서 받은 데이터를 전역 difficulty 에 저장.
    2. 세그먼트 초기화
  • game 함수 진입
    1. 루프진입
    2. 스테이지카운터 체크(해당 스테이지의 몇번째 문제인지...)
    3. 배경 출력
    4. 수식 생성, (3자리수 이상, 음의값 이 나올경우 다시 생성)
  • set_susik 함수 진입
    1. 수식을 해당 스테이지 레벨에 맞게 생성
    2. 생성된 수식의 결과값을 계산
    3. 결과값을 수식에 추가하여 최종적인 수식 완성
    4. 해당 수식의 정수형 결과값을 리턴
  • game 함수 복귀
    5. 마스크 지점을 계산 (수가 있는 부분중에서 랜덤)
    6. 마스크 될 지점의 원래 값을 임시로 저장후 해당 마스크 지점을 수식에 '?'로 대치
    7. 문제 출력
    8. 사용자로 부터 입력을 기다림
    9. 입력된 값을 정답과 비교, 해당 결과에 대한 처리
    10. 스테이지 카운터를 증가후 관련 변수 리셋.
    11. 스테이지가 6이하이며 해당 스테이지 출제문제수가 10보다 클때 스테이지를 증가
    12. 1번으로 돌아감
  • 13. 사용자가 종료를 했을경우 게임오버 화면을 출력.
    14. 전 스테이지를 클리어 했을경우 게임 클리어 화면을 출력.
    15. 변수 리셋후 메인메뉴로 돌아감.


  •  Game Clear & Over

    게임 모듈 내부에서 판단한다.

    해당되는 배경을 출력후 정답과 오답수를 표기하고 터치를 대기하고

    터치의 좌표에 상관없이 입력되면 게임 관련 변수를 초기화 하고 메인메뉴로 돌아간다.


[COMMENT]#

대학교 3학년때 처음으로 완성된 프로그램을 만들어 본 첫 작품입니다. (매우 심각하다 ㅡㅡ;)

제작기간은 약 1주 정도. 레포트 수준의 개인 프로젝트였는데 생각보다 시간이 오래걸렸어요.

기획서는 5분만에 닌텐도DS 게임으로 부터 약간의 아이디어를 얻고 계획 발표할때 약간 아이디어를 얻어서 나왔는데

완성도가 제법 떨어집니다. (ㅡㅡ;)


참고로 계획서에서 적어놓았던 사항을 보면


[내 용]

  • 화면에 랜덤한 수식이 나오면 이를 주어진 시간내에 정답을 입력한다.
  • 입출력 장치로는 LCD 와 터치패드가 사용된다.
  • 정답과 오답의 경우 각각 준비된 음원을 사용하여 출력하고
  • 총 스테이지별로 난이도가 높아지도록 한다.
  • 난이도 요소로는 수식의 길이, 연산기호, 시간으로 조정한다.
  • 스코어 시스템과 콤보 시스템이 있으며 스코어는 1000점,10000만점 단위,
  • 콤보는 5콤보 단위마다 특정 음원을 출력한다.

 이렇게 되어있는데 가장 첫 항목이 구현되지 않았고 마지막항목과 마지막 전항목이 구현되지 않았습니다.

그야 말로 게임성에 필요한 부분이 모조리 전멸 ㅡㅡ;

임베디드 장비라고 해도 임베디드 리눅스 기반으로 만들고 있었기 때문에 쓰레드를 사용할 수도 있었지만 저렇게 완성된 데서

그만 만족하고 말았는데 지금 생각하면 참으로 아쉬운 부분입니다.


현재 닌텐도DS 홈브루로 이식해보고 있는데 기존 게임은 거의 동일하게 구현되어있고 앞으로 빠진 사항들을 추가로 넣어볼 생각입니다.

신고
TAG : ,

댓글을 달아 주세요

About



모바일 페이지 QR 코드

Counter

· Total
: 468,648
· Today
: 0
· Yesterday
: 142


DNS server, DNS service