int main (){ printf("Start game\n"); initBoard(); /*ボードの初期化*/ showBoard(); /*ボードの表示*/ initStone(); /*石の初期化*/ initPlayer(); /*プレーヤーの初期化*/ cont = 1; /*継続判定の初期化*/ judge = 0; /*勝ち判定初期化*/ printf("\n"); while (cont == 1){ input(); /*マス目の選択受付*/ showBoard(); checkWin(); /*勝ち判定*/ if (judge == 1){ break; /*勝ち判定ありの場合、ループ脱出*/ } else { check(); /*ゲーム継続可能性(空きマスがあるか)の判定*/ changeStone(); changePlayer(); printf("\n"); } } printf("\n"); dispWinner(); /*judgeの値により勝者表示OR引分宣言*/ return 0; }
KJumpingCube::KJumpingCube() : view(new KCubeBoxWidget(5, this, "KCubeBoxWidget")) { connect(view,SIGNAL(playerChanged(int)),SLOT(changePlayer(int))); connect(view,SIGNAL(stoppedMoving()),SLOT(disableStop())); connect(view,SIGNAL(stoppedThinking()),SLOT(disableStop())); connect(view,SIGNAL(startedMoving()),SLOT(enableStop_Moving())); connect(view,SIGNAL(startedThinking()),SLOT(enableStop_Thinking())); connect(view,SIGNAL(playerWon(int)),SLOT(showWinner(int))); // tell the KMainWindow that this is indeed the main widget setCentralWidget(view); // init statusbar QString s = i18n("Current player:"); statusBar()->insertItem(s,ID_STATUS_TURN_TEXT, false); statusBar()->changeItem(s,ID_STATUS_TURN_TEXT); statusBar()->setItemAlignment (ID_STATUS_TURN_TEXT, AlignLeft | AlignVCenter); statusBar()->setFixedHeight( statusBar()->sizeHint().height() ); currentPlayer = new QWidget(this, "currentPlayer"); currentPlayer->setFixedWidth(40); statusBar()->addWidget(currentPlayer, ID_STATUS_TURN, false); statusBar()->setItemAlignment(ID_STATUS_TURN, AlignLeft | AlignVCenter); initKAction(); changePlayer(1); }
void Reversi::newGame(){ map = new Map(FIELD_SIZE); gameOver = false; gameStatus = WHITE_PLAYER_TURN; // Turn zero refreshField(); changePlayer(0); // Change player to turn one }
void CheckerBoardWidget::receiveCheckerboard(checkerboard c) { board = c; clearLists(); //this->clear(); changePlayer(); placeCheckers(); }
void Dialog::onTimerOut() { if (map->curPlayer == player) { ++myTotalTime; QString myDisplayTime = ""; if (myTotalTime / 60 < 10) { myDisplayTime += "0" + QString::number(myTotalTime / 60); }else { myDisplayTime += QString::number(myTotalTime / 60); } myDisplayTime += ":"; if (myTotalTime % 60 < 10) { myDisplayTime += "0" + QString::number(myTotalTime % 60); }else { myDisplayTime += QString::number(myTotalTime % 60); } myTotalTimeLCD->display(myDisplayTime); if (--mySingleTime == 0) { mySingleTimeLCD->display(0); changePlayer(); return; } mySingleTimeLCD->display(mySingleTime); }else { ++opTotalTime; QString opDisplayTime = ""; if (opTotalTime / 60 < 10) { opDisplayTime += "0" + QString::number(opTotalTime / 60); }else { opDisplayTime += QString::number(opTotalTime / 60); } opDisplayTime += ":"; if (opTotalTime % 60 < 10) { opDisplayTime += "0" + QString::number(opTotalTime % 60); }else { opDisplayTime += QString::number(opTotalTime % 60); } opTotalTimeLCD->display(opDisplayTime); if (--opSingleTime == 0) { opSingleTimeLCD->display(0); changePlayer(); return; } opSingleTimeLCD->display(opSingleTime); } }
void Battlefield::game(RenderWindow &window){ yourField->act_game(window); enemyField->act(window); shootField->setShooter(current_player); if (shootField->shoot()) changePlayer(); if (current_player->isLoose()) game_over = true; }
int TicTacToeGame::playTurn() { if (playerTurn == CROSS) crossPlayer->turn(&board); else circlePlayer->turn(&board); changePlayer(); return 0; }
void Reversi::cellClicked(int x, int y) { Lines lines(gameStatus, Point(x, y), map->fieldStatus, FIELD_SIZE); if (map->fieldStatus[x][y] == 0) { QList<Point> modifiedCells = lines.getActiveTiles(); if ((modifiedCells.size() > 0)) { for (unint i = 0; i < modifiedCells.size(); i++) { map->fieldStatus[modifiedCells.at(i).x][modifiedCells.at(i).y] = gameStatus; } refreshField(); changePlayer(0); } } }
void Position::applyMove(Square sq) { place(sq, currentPlayer()); for (int d = 0; d < TOT_DIR; ++d) { if (isValidMove(sq, DIR[d])) reverse(sq, DIR[d]); } ++count[currentPlayer()]; nullMoveCount = 0; changePlayer(); }
void GameManager::preUpdate(unsigned long elapsed_millis) { if (_gameMode) { if(cg::KeyBuffer::instance()->isKeyDown('z') && !_changePlayerPressed) { changePlayer(); _changePlayerPressed = true; } if (cg::KeyBuffer::instance()->isKeyUp('z') && _changePlayerPressed) { _changePlayerPressed = false; } } _fog->draw(); //this stupid hack shouldn't be needed! This class should draw all it's entities! }
void Dialog::putPoint(int x, int y) { map->arr[x][y] = player; withDrawTime = 0; withdrawButton->setEnabled(true); map->place.push_back(QPoint(x, y)); changePlayer(); /*if (map->curPlayer == Map::Black) map->curPlayer = Map::White; else map->curPlayer = Map::Black;*/ update(); if (gameLogic->checkWin()) { gameOver(1); } }
int main(void) { int fini,x,y; fini=0; initPlayer(); createBoard(); while(!fini) { displayBoard(); if(getPlayer()==CROSS) { printf("Cross to play\n"); } else { printf("Circle to play\n"); } printf("column?: "); scanf("%d",&x); printf("line?: "); scanf("%d",&y); if(putPiece(x,y,getPlayer())==0) { fini=checkGameStatus(); if(!fini) { changePlayer(); } }else { printf("you can't play here!\n"); } } displayBoard(); if(getPlayer()==CROSS) { printf("Cross won \\o/\n"); } else { printf("Circle won \\o/\n"); } }
void Game::run() { isStarted = true; while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) { window.close(); } if (!isFinished) { if (event.type == sf::Event::MouseButtonReleased) { if (event.mouseButton.button == sf::Mouse::Left) { bool click = mGrid.onClickListener( sf::Vector2f(event.mouseButton.x, event.mouseButton.y), mPlayers[mCurrentPlayer]); if (click) { changePlayer(); } if (mGrid.hasWinner()) { if (!mGrid.isDraw()) { printf("WINNER: %s\n", mGrid.getWinner()->getName().c_str()); } else { printf("DRAW!\n"); } isFinished= true; } } } } } window.clear(sf::Color(0xFF, 0xFF, 0xFF)); window.draw(mGrid); window.display(); } }
void CheckerBoardWidget::move() { movement m; m.startPoint.line = firstClick.y(); m.startPoint.column = firstClick.x(); m.endPoint.line = secondClick.y(); m.endPoint.column = secondClick.x(); qDebug() << "[Move] "; qDebug() << "[MOVEMENT] : start (" << m.startPoint.line << ", " << m.startPoint.column << ")"; qDebug() << "[MOVEMENT] : end (" << m.endPoint.line << ", " << m.endPoint.column << ")"; if(test_and_execute_movement(player_color, m, &board) != 0) { //Valid movement, do it for gui qDebug() << "movement is ok"; promote_checkers(&board, player_color); //Check if daughter is made clearLists(); // Clear all the gui gameboard placeCheckers(); // Reconstruct the new GUI gameboard //Check if there is a winner if(game_ended(&board) == BLACK_CHECKER) { _player.color == BLACK_CHECKER ? emit sendWinner(_player) : emit sendWinner(_opponent_player); } if(game_ended(&board) == WHITE_CHECKER) { _player.color == WHITE_CHECKER ? emit sendWinner(_opponent_player) : emit sendWinner(_player); } preventAction(player_color); changePlayer(); // qDebug() << "ppppppppppppppppppppppppppppppp" << (char *) board; emit sendCheckerboard(board); } }
void Dialog::calcRead() { /*if (opAvatarPixmap.isNull()) { opAvatarPixmap.loadFromData(readWriteSocket->readAll()); sendUsername(); return; }*/ QString info; info = readWriteSocket->readAll(); qDebug() << "calcRead " << info; if (opUserName == "") { QStringList infoList2 = info.split("@"); opAvatarFileName = infoList2[0]; opUserName = infoList2[1]; opAvatarPixmap.load(opAvatarFileName); qDebug() << opAvatarFileName + " " + opUserName; prepareGameWidget(); return; } if (info == "start") { isOpBegin = true; if (isMeBegin) { isGameBegin = true; connect(timer, SIGNAL(timeout()), this, SLOT(onTimerOut())); update(); timer->start(); } return; } if (info == "requestQuit") { timer->stop(); QMessageBox::StandardButton b1 = QMessageBox::question(NULL, "Request", "对方请求退出游戏"); if (b1 == QMessageBox::Yes) { timer->start(); sendMessage("agreeQuit"); InitialGame(); //this->close(); }else { timer->start(); sendMessage("disagreeQuit"); } return; } if (info == "agreeQuit") { timer->start(); InitialGame(); //this->close(); return; } if (info == "disagreeQuit") { timer->start(); QMessageBox::about(NULL, "Result", "对方不同意退出游戏"); return; } if (info == "requestSave") { timer->stop(); QMessageBox::StandardButton b2 = QMessageBox::question(NULL, "Request", "对方请求保存残局"); if (b2 == QMessageBox::Yes) { timer->start(); QTime time = QTime::currentTime(); map->save(QString::number(time.hour()) + "_" + QString::number(time.minute()) + ".txt"); sendMessage("agreeSave"); }else { timer->start(); sendMessage("disagreeSave"); } return; } if (info == "agreeSave") { timer->start(); QTime time = QTime::currentTime(); map->save(QString::number(time.hour()) + "_" + QString::number(time.minute()) + ".txt"); return; } if (info == "disagreeSave") { timer->start(); QMessageBox::about(NULL, "Result", "对方不同意保存残局"); return; } if (info.contains("requestLoad")) { timer->stop(); QStringList list1 = info.split("#"); QMessageBox::StandardButton b3 = QMessageBox::question(NULL, "Request", "对方请求加载残局" + list1[(int)list1.size() - 1]); if (b3 == QMessageBox::Yes) { timer->start(); map->load(list1[(int)list1.size() - 1]); update(); sendMessage("agreeLoad#" + list1[(int)list1.size() - 1]); }else { timer->start(); sendMessage("disagreeLoad"); } return; } if (info == "disagreeLoad") { timer->start(); QMessageBox::about(NULL, "Result", "对方不同意加载残局"); return; } if (info.contains("agreeLoad")) { timer->start(); QStringList list2 = info.split("#"); map->load(list2[(int)list2.size() - 1]); update(); return; } if (info == "requestWithdraw") { timer->stop(); QMessageBox::StandardButton b4 = QMessageBox::question(NULL, "Request", "对方请求悔棋"); if (b4 == QMessageBox::Yes) { timer->start(); sendMessage("agreeWithdraw"); map->pop(player ^ 1); renewTime(); }else { timer->start(); sendMessage("disagreeWithdraw"); } return; } if (info == "agreeWithdraw") { timer->start(); ++withDrawTime; if (withDrawTime >= 2) { withdrawButton->setDisabled(true); } map->pop(player); if (checkNoMyChess()) { withdrawButton->setDisabled(true); } renewTime(); return; } if (info == "disagreeWithdraw") { timer->start(); QMessageBox::about(NULL, "Result", "对方不同意悔棋"); return; } QStringList infoList = info.split("_"); int x = infoList[0].toInt(); int y = infoList[1].toInt(); map->arr[x][y] = player ^ 1; map->place.push_back(QPoint(x, y)); changePlayer(); /*if (map->curPlayer == Map::Black) map->curPlayer = Map::White; else map->curPlayer = Map::Black;*/ update(); if (gameLogic->checkWin()) { gameOver(0); } }
void Position::applyNullMove() { ++nullMoveCount; changePlayer(); }
void Reversi::changePlayer(int skippedTurns) { // Change player turn switch (gameStatus *= -1) { case WHITE_PLAYER_TURN: { QString result1 = QString("White player\'s turn"); result1.append(gameScore); main->setStatusBar(&result1); break; } case BLACK_PLAYER_TURN: { QString result2 = QString("Black player\'s turn"); result2.append(gameScore); main->setStatusBar(&result2); break; } } if (checkForLegalTurns() && skippedTurns < 1) { changePlayer(1); } else if (checkForLegalTurns() && skippedTurns > 0) { QString result3 = QString("Game over"); result3.append(gameScore); main->setStatusBar(&result3); skippedTurns++; } // Counts the amount of time this function was called switch (skippedTurns) { case 1:{ QMessageBox msgBox1; switch(gameStatus*(-1)){ case WHITE_PLAYER_TURN: msgBox1.setText("White player skips a turn"); break; case BLACK_PLAYER_TURN: msgBox1.setText("Black player skips a turn"); break; } msgBox1.exec(); return; } case 2:{ QMessageBox msgBox2; msgBox2.setText("White player wins"); if((map->blackChipCount-map->whiteChipCount)< 0){ } else if((map->blackChipCount-map->whiteChipCount)>0){ msgBox2.setText("Black player wins"); } else { msgBox2.setText("Its a draw"); } msgBox2.setInformativeText(*gameScore); msgBox2.exec(); gameOver = true; return; } } if(playWithAi && gameStatus==WHITE_PLAYER_TURN && !gameOver){ AI *bot = new AI(gameStatus); bot->makeTurn(map); refreshField(); changePlayer(0); } }