저는 지금 C++로 프로그래밍을 해왔으며 지금은 구문에 익숙합니다. 나는 카드 게임을 만들기 위해 알레그로를 사용하려고 노력하고있다. 나는 게임 논리를 위해 내가해야 할 모든 것을 이해하고 그렇지 않다. 나를 괴롭히는 것은 게임을하는 방법입니다. 나는 루프 기반 응용 프로그램에 익숙하다. VB에서 이벤트 기반 프로그래밍에 익숙해졌습니다. 나는 예를 들어 플레이어를 바꾸고 if와 bool을 많이 사용하지 않고 "이벤트"를 올리는 적절한 방법을 확신하지 못합니다. 또한 지금 당장 나는 어떤 카드가 있는지 확인하는 bool 배열을 가지고있다. 그리고 내 게임은 매번 모든 부울 배열을 반복하며 나에게는 지저분 해 보입니다. 또한 내 메뉴 루프에서 내 설정 루프로 이동하려면 큰 bool없이 어떻게해야합니까? 감사합니다.게임 프로그래밍 구조
답변
대부분의 게임 프레임 워크는 (그들 모두가 루프에서 호출)를 구현해야하는 두 가지 방법을 제공합니다
- 업데이트를
- 그리기
Update
은 사용자 입력, 상태 변경, 인터벌 작업 등을 확인해야하는 모든 것을 넣어야하는 곳입니다. 예를 들어 Physics, Butto nPressed 등이 있습니다. 여기서 이벤트로 작업하는 것을 방해하지 않습니다 (BoostLibrary Signals을보십시오).
void Game::update() {
if(pushedButton) {
this->cardsOnTable->add(this->hand->remove(0));
this->activePlayer = nextPlayer();
}
}
Draw
은 현재 기본 상태를 화면에 표시해야합니다. 따라서 기본 상태/모델에 쉽게 액세스 할 수 있도록해야합니다.
void Game::render() {
this->table->render();
this->cardsOnTable->render();
this->hand->render();
// ...
flipBuffers();
}
당신은 Scenes
와 메뉴/SettingsMenu 문제를 해결할 수 있으며, SceneManager
(스택 될 수 있음). 따라서 논리를 Game
에 직접 입력하는 대신 Scenes
에 입력하십시오. 또한 Manager에서 /로 장면을 밀거나 팝 할 수 있습니다.
void Game::update() {
this->sceneManager->activeScene->update();
}
void MenuScene::update() {
if(settingsMenuItemSelected) {
game->sceneManager->push(new SettingsMenuScene));
// now the next time Game::update() is called
// the active scene of the SceneManager will be
// the settings menu. And once it is closed/cancelled
// it will pop itself from the manager and we are back
// in the regular menu
}
}
당신이 더 많은 고급 물건을 시작하려면, 당신은 거대한 목록에 "이벤트"를 저장하고 Game::update
방법을 입력 할 때 모든 이벤트를 발생을 시도 할 수 있습니다 -이 VB는 '당신이 할 수 있는지 확인합니다 어떻게 UI 스레드가 아닌 다른 스레드에서 컨트롤을 수정 -하지만이 C++ 사용하여 할 것이라고 생각하지 않습니다.
이들은 많은 질문입니다. 나의 첫 번째 제안은 비슷한 게임에 대한 온라인 소스 코드를 찾는 것입니다. 코드에 대한 도움이 필요한 경우 질문과 함께 게시하십시오.
당신은 가장 가능성 IFS의 무리가 필요하고 이런 식가는 루프 :
while(1){
initYourLevel();
while(levelNotOver){
//do things
}
}
그런 다음 모든 당신이 뭘 하려는지 따라 달라집니다 귀하의 질문이 나에게 가지 흐릿하다.
tutorials을보고 사람들이 일하는 방식에 대해 머리를 감싸십시오. 거기에 많은 샘플 코드가 있습니다!
을하는 데 도움이
희망
일반적으로 여기에 다른 질문에서 이미 설명 된 프로그래밍 관용구 및 디자인 패턴에 대한 책을 살펴볼 수 있습니다. 게임과 직접 관련이없는 경우에도 도움이됩니다.
게임 엔진은 상태 머신 (상태 게임, 상태 설정 및 하위 상태)의 좋은 예입니다. 조건부 분기 등으로 모두 할 수 있습니다., 당신이 추상화해야 할 필요가 커지면 머리를 잃지 않아야합니다.
다형성 클래스 (좋아하는 C++ 패턴 북을 참조하십시오), 템플릿 기반 (boost.statechart), ...
중앙 루프를 사용할 때 이벤트를 전달할 때 공통점은 무엇입니까? 현재 상황에 맞는 작업을 수행하는 일부 처리기 (상태 또는 하위 상태를 나타냄). 행동을 (예 : 게임에서 옵션으로) 변경해야합니까? 핸들러를 끄십시오.
또한 현재 게임 상태를 랩핑하고 추상화하려는 경우가 있습니다. 예를 들어, 게임의 명시적인 처리가 필요하지 않습니다. 모든 장소의 카드. 물건을 예를 들어 포장하십시오. 내부적으로 처리하는 카드 또는 플레이어 관리자.
또한 C++에서 제공하는 컨테이너 및 알고리즘을 무료로 사용할 수 있습니다. std::map
또는 std::set
s의 카드 또는 플레이어를 관리하십시오. 표준 라이브러리 체크 아웃의 한계를 맞았을 때.
- 1. cocos2d 아이폰 게임 구조
- 2. 게임 프로그래밍
- 3. 게임 프로그래밍
- 4. 게임 내 방어 구조 배치
- 5. C++ 게임 프로그래밍 리소스
- 6. Java에서 3d 게임 프로그래밍
- 7. 게임 프로그래밍 문학
- 8. SilverLight : 아이들을위한 게임 프로그래밍
- 9. Python 게임 프로그래밍
- 10. 메인 루프가없는 게임 프로그래밍
- 11. Java에서 3D 게임 프로그래밍
- 12. C# 네트워크 게임 프로그래밍
- 13. iPhone 2D 게임 프로그래밍
- 14. DirectX-C++에서의 게임 프로그래밍
- 15. 드레스 업 게임 프로그래밍 문제
- 16. Java로 간단한 게임 프로그래밍 방법
- 17. 게임 도트 및 상자의 데이터 구조
- 18. As3 OOP 게임 구조 (계급 건축)
- 19. 게임 프로그래밍 - 2 차원 게임 개체 간의 통신
- 20. 게임 사용자 인터페이스 리버스 엔지니어링 - 프로그래밍 기술
- 21. 게임 프로그래밍 DSL에서 어떤 기능을보고 싶습니까?
- 22. iPhone 게임 프로그래밍 :이 게임을위한 프레임 워크?
- 23. iphone 게임 프로그래밍 : tilemap 검은 선 문제
- 24. C#의 게임 프로그래밍 : 스프라이트 충돌
- 25. 팩맨 게임 : 프로그래밍 언어 및 ActionScript 처리
- 26. Android 2D 게임 프로그래밍 : OpenGL 사용 여부
- 27. 시리얼 통신 프로그래밍 구조 (C#/net/
- 28. 촘스키 계층 구조 및 프로그래밍 언어
- 29. C++에서 프로그래밍 방식으로 데이터베이스 구조 확인
- 30. RPG 게임 루프 및 클래스 구조 (iPhone 용 cocos2D)
큰 bool 뭐죠? '긴 긴 bool'? ;) –