Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2013, 17:51   #1
PikaSSo
 
Регистрация: 16.05.2013
Сообщений: 4
Печаль Создание игры с фишками

На игровой доске поля 10x10 2-x цветов игроки начинают с противоположных углов имея по 1-й фишке.Фишки могут ходить на расстояние не более 2-х клеток.При перемещения на 1-ну клетку происходит копирование,при каждом ходе все соседние фишки становятся такого же цвета что и ходивший.Выигрывает тот игрок,который при заполнении всего поля,имеет больше фишек.
Нужно что бы можно было играть как с компьютером так и с игроком
Помогите в составлении игры или хотя бы разобраться с алгоритмом доски и фишек

Мне эта игра нужна к курсовому проекту а я так и не дапер как сделать,пробовал по примеру крестиков и ноликов,реверси но без результат но,я извиняюсь если я некорректно поставил вопрос просто я первый раз задаю тему=)

За ранние,спасибо!
PikaSSo вне форума Ответить с цитированием
Старый 31.05.2013, 17:56   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

"Алгоритм доски", собственно, описан в задании. Игроки поочерёдно могут двигать фишки из позиции (x1,y1) в позицию (x2, y2); каждая клетка доски находится в одном из трёх состояний - "пуста", "содержит белую фишку", "содержит чёрную фишку".
"Алгоритм игрока" более-менее понятен: есть пространство возможных ходов, каждая позиция может быть оценена как разность количества "своих" фишек и фишек оппонента, её надо максимизировать.
Abstraction вне форума Ответить с цитированием
Старый 31.05.2013, 18:11   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Непонятны следующие элементы условия:
- что такое "происходит копирование"? Что копируется и куда?
- в какие стороны и откуда может ходить игрок?
- не описано, что происходит, если игрок ходит на 2 клетки.
- опять же, что такое ход на 2 клетки? В какие клетки он может при этом попасть?
- раз перекрашиваются все фишки, значит, подразумевается, что фишек более двух. Откуда берутся дополнительные фишки?
s-andriano вне форума Ответить с цитированием
Старый 01.06.2013, 02:43   #4
PikaSSo
 
Регистрация: 16.05.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Непонятны следующие элементы условия:
- что такое "происходит копирование"? Что копируется и куда?
- в какие стороны и откуда может ходить игрок?
- не описано, что происходит, если игрок ходит на 2 клетки.
- опять же, что такое ход на 2 клетки? В какие клетки он может при этом попасть?
- раз перекрашиваются все фишки, значит, подразумевается, что фишек более двух. Откуда берутся дополнительные фишки?
Происходит копирование когда фишка прошла одну клетку (в любую сторону),игроки ходят со своего угла к примеру чёрная фишка в низу угла,белая в верху угла они могут ходить в любую сторону по очереди их главная задача занять как можно больше клеток и при их вталкивании друг с другом соседние фишки становятся другого цвета в зависимости от хода игрока,я скрины скину что бы понятнее было было

Последний раз редактировалось PikaSSo; 01.06.2013 в 04:04.
PikaSSo вне форума Ответить с цитированием
Старый 01.06.2013, 21:32   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вы лучше не скрины, Вы словами объясните.
Если Вы этого сделать не можете, программирование не для Вас. Программирование требует умения четко выражать свои мысли.
Вы же не ответили ни на один вопрос!
Еще раз:
- что такое копирование?
- если, скажем, я стою на поле c3, на какие поля я могу ходить?
- есть ли случаи, когда я могу ходить не во все клетки из ответа на предыдущий вопрос.
- ну и все вопросы из сообщения №3
s-andriano вне форума Ответить с цитированием
Старый 02.06.2013, 00:18   #6
PikaSSo
 
Регистрация: 16.05.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Вы лучше не скрины, Вы словами объясните.
Если Вы этого сделать не можете, программирование не для Вас. Программирование требует умения четко выражать свои мысли.
Вы же не ответили ни на один вопрос!
Еще раз:
- что такое копирование?
- если, скажем, я стою на поле c3, на какие поля я могу ходить?
- есть ли случаи, когда я могу ходить не во все клетки из ответа на предыдущий вопрос.
- ну и все вопросы из сообщения №3
Попробую коротко ответить,знаете игру "реверси" так вот принцип игры такой же как и на "Реверси" только место 4 фишек по центру, стоят 2 по углам одна с низу другая с верх и поле 10x10, дальше все по принципу той игры который я назвал

Цитата:
Сообщение от Abstraction Посмотреть сообщение
"Алгоритм доски", собственно, описан в задании. Игроки поочерёдно могут двигать фишки из позиции (x1,y1) в позицию (x2, y2); каждая клетка доски находится в одном из трёх состояний - "пуста", "содержит белую фишку", "содержит чёрную фишку".
"Алгоритм игрока" более-менее понятен: есть пространство возможных ходов, каждая позиция может быть оценена как разность количества "своих" фишек и фишек оппонента, её надо максимизировать.
Я извиняюсь за наглость,множите хотя бы в примере записать код ,я просто не особо понимаю как создать такую доску и как расписать ход фишек бо у меня с этим туго

Последний раз редактировалось Stilet; 02.06.2013 в 16:38.
PikaSSo вне форума Ответить с цитированием
Старый 02.06.2013, 01:05   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
typedef std::pair<size_t, size_t> Cell;

class Board {
  enum State{
    EMPTY,
    BLACK,
    WHITE
  };

  enum Player{
    PLAYER_BLACK,
    PLAYER_WHITE
  };
  private:
    State m_board[Height][Width];

  public:
    static const size_t Width = 19;
    static const size_t Height = 19;

    Board(void);
    void Turn(Player p, const Cell& from, const Cell& to);
    int Score(void) const;
    State CellState(size_t row, size_t column)const;
};

Board::Board(void){
  for(size_t i=0; i<Height; ++i)
    for(size_t j=0; j<Width; ++j)
      m_board[i][j] = EMPTY;
  m_board[0][0] = BLACK;
  m_board[Height-1][Width-1] = WHITE;
}

void Board::Turn(Player p, const Cell& from, const Cell& to){
  State fromState = m_board[from.first()][from.second()];
  if(fromState == EMPTY) throw ArgumentException();
  if(fromState == WHITE && p == PLAYER_BLACK) throw ArgumentException();
  if(fromState == BLACK && p == PLAYER_WHITE) throw ArgumentException();
  
  if(m_board[to.first()][to.second()] != EMPTY) throw ArgumentException();

  switch((int)(abs(to.first()-from.first())+abs(to.second()-from.second()))){
    case 1:
      m_board[to.first()][to.second()] = p+1;
      return;
    case 2:
      m_board[to.first()][to.second()] = p+1;
      m_board[from.first()][from.second()] = EMPTY;
      return;   
    default:
      throw ArgumentException();
  }
}

int Board::Score(void) const{
  static const int values[] = {0, 1, -1};
  int ret = 0;
  for(size_t i=0; i<Height; ++i)
    for(size_t j=0; j<Width; ++j)
      ret += values[m_board[i][j]];
  return ret;
}

State Board::CellState(size_t row, size_t column)const{
  return m_board[row][column];
}

Последний раз редактировалось Abstraction; 02.06.2013 в 01:10.
Abstraction вне форума Ответить с цитированием
Старый 02.06.2013, 01:05   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

(дубль, удалено)
Abstraction вне форума Ответить с цитированием
Старый 02.06.2013, 01:16   #9
PikaSSo
 
Регистрация: 16.05.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
(дубль, удалено)
Спасибо, но мне код на Delphi нужен
PikaSSo вне форума Ответить с цитированием
Старый 02.06.2013, 16:29   #10
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от PikaSSo Посмотреть сообщение
Попробую коротко ответить,знаете игру "реверси"
Не знаю.
На мои вопросы ответить можете?
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание 3D игры zik1 Свободное общение 13 29.04.2012 18:45
Создание игры FilteR Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 12.12.2010 19:08
Создание игры Ушастик Фриланс 1 17.11.2010 18:09
Создание игры Revival001 Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 24.01.2009 19:54