iOS 용 BlackJack 게임을 개발 중입니다. 현재 상태를 추적하고 수행해야 할 작업이 어려워지고 있습니다. 더 많은 옵션을 추가로iOS에서 사용자 상호 작용을 기다리는 디자인 패턴?
- (void)hitButtonPress:(id)sender {
game->hit();
}
void Game::hit() {
dealCard(playerQueue.top());
}
void Game::stand() {
playerQueue.pop();
goToNextPlayersTurn();
}
:
class Game {
queue<Player> playerQueue;
void hit();
void stand();
}
은 현재 내가 이벤트 (방법 A)를 사용하여 구현하고있어 예를 들어, 나는 현재 게임의 추적하는 C++ 클래스가 게임에, 각각을위한 사건을 창조하는 것은 지루하고 어려워지고있다.
나는 그것을 구현하는 생각을 또 다른 방법은 매우처럼 (방법 B) :
void Game::playersTurn(Player *player) {
dealCards(player);
while (true) {
string choice = waitForUserChoice();
if (choice == "stand") break;
if (choice == "hit")
dealCard(player);
// etc.
}
playerQueue.pop();
goToNextPlayersTurn();
}
waitForUserChoice
는 사용자가 UIViewController
와 상호 작용 할 수있는 특수 기능입니다 사용자는 다음 버튼을 누르면 한 번 컨트롤을 playersTurn
함수로 반환합니다. 즉, 사용자가 버튼을 클릭 할 때까지 프로그램을 일시 중지합니다.
방법 A를 사용하면 사용자 상호 작용이 필요할 때마다 기능을 분리해야합니다. 방법 B는 모든 것을 제어 할 수있게합니다.
A : : 방법 A와 B 사이의 본질적으로 차이는 다음과
function A() {
initialize();
// now wait for user interaction by waiting for a call to CompleteA
}
function CompleteA() {
finalize();
}
B :
function B() {
initialize();
waitForUserInteraction();
finalize();
}
공지 사항 B는 코드가 더 조직 유지하는 방법. Objective-C로이 작업을 수행 할 수있는 방법이 있습니까? 아니면 제가 언급하지 않은 다른 방법이 있습니까?
내가 생각할 수있는 세 번째 옵션은 유한 상태 시스템을 사용하는 것입니다. 나는 그들에 대해 조금은 들었지만, 그것이이 경우 나를 도울 것인지 확신 할 수있다.
문제점에 대해 권장되는 설계 패턴은 무엇입니까?
일반적으로 사용자가 입력을 알리는 이벤트를 구독합니다. 게임을 코딩 할 때 일반적으로 사용자가 입력 한 내용을 확인하고 반복 할 수있는 루프가 있습니다. 이 경우 일반적으로 Cocos2D와 업데이트 기능을 살펴보고 싶습니다. – Daniel
블록을 사용하면이 문제를 쉽게 해결할 수 있습니다. – holex