0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 26
1

Игра уголки

22.09.2015, 19:00. Показов 2556. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вообщем есть у меня игра уголки, но она не доработана, требуется сделать так что бы нельзя было ходить назад, как это сделать? Может кто нибудь объяснит подробно?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2015, 19:00
Ответы с готовыми решениями:

если у кого есть киньте исходники на шашки и на любые игры в том же стиле(типа уголки и т.д)
люди. пожалуйста. если у кого есть киньте исходники на шашки и на любые игры в том же стиле(типа...

Игра Уголки
Набросал на досуге игру "уголки" на C# с простеньким AI. 8-) Ещё немного не до конца доделал....

Игра уголки
////// DEFINITION ////// #define B 1 //черная шашка #define W 2 //белая #define F 3 //флаг...

Игра «Уголки»
ребят ,помогите пожалуйста:игра уголки значит по существу 2 проблемы 1) не могу подключить...

7
841 / 736 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
22.09.2015, 19:16 2
Цитата Сообщение от Gusakou Посмотреть сообщение
требуется сделать так что бы нельзя было ходить назад, как это сделать?
Запоминай в массив куда уже ходил! И далее перед каждым новым ходом проверяй (пиши условие) если эта "клетка" массива была уже то запрещай в нее ходить.
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2015, 19:18 3
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
эта "клетка" массива была уже то запрещай в нее ходить.
Ты сам-то играл в уголки?
0
841 / 736 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
22.09.2015, 19:20 4
А подожди тебе назад нельзя? Тогда просто делай так чтобы клетка по У могла ходить только вверх, то есть при каждом следуещем ходе координата У в массиве должна быть больше чем предыдущая.

Добавлено через 1 минуту
Puporev, Нет неиграл еще, но картинку - поле от игры видел в инете.
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
22.09.2015, 19:23 5
В этой игре часто по одной "дорожке" проводят несколько шашек.

Добавлено через 1 минуту
Цитата Сообщение от Gusakou Посмотреть сообщение
что бы нельзя было ходить назад,
А назад ходить разрешается, часто в позиции цугцванга только назад и можно пойти.
0
0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 26
22.09.2015, 19:27  [ТС] 6
Просто скиньте мне код и все
0
841 / 736 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
22.09.2015, 20:41 7
Лучший ответ Сообщение было отмечено Gusakou как решение

Решение

Цитата Сообщение от Gusakou Посмотреть сообщение
Просто скиньте мне код и все
Кто тебе его напишет за 30 минут?
Накидал пример- начало сколько смог, дальше разовьеш, примерно опишу как.

1). Делаеш обычный массив 8 на 8 или скока там у тебя поле?
2). Заполняеш весь массив на старте программы пустыми клетками.
3). Заполняеш нужные части массива нужными значениями с последующей отрисовкой канвы
4). Пишеш условие перемещение шарик на шарик нельзя это я все тебе уже сделал.

Далее пишеш код (условие массиву) шарик может перемещаться только на 1 клетку вправо-влево, вверх-вниз (и по диагонали если в правилах игры так можно)..

Далее пишеш код на выйгрышную ситуацию. Просто проверяеш в цикле нужные клетки массива заполнены ли нужными числами (тот же самый цикл где расставляли и отрисовывали шарики здессь в коде он уже присутствует! Просто повтори его на опускание мышки).

Далее- игра готова.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
const
  kletka_x = 8; //кол-во клеток
  kletka_y = 8;
  razm_x = 32; //размеры клеток
  razm_y = 32;
 
var
  Form1: TForm1;
  i, j: Integer; //цикл
  map: array[0..kletka_x - 1, 0..kletka_y - 1] of string;
  mr: TRect; //рект область для отрисовки
  nx, ny: Integer; //для вычисления ячеек
  zapom: string; //запомнить значение массива где взяли шарик
  zap_x, zap_y: Integer; //запомнить индексы массива куда отпустить
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  // размер имаги = размер клетки * количество клеток
  Image1.Width := razm_x * kletka_x;
  Image1.Height := razm_y * kletka_y;
 
  // заполним массив пустыми клетками (вернее 0- потом отрисуем)
  for j := 0 to 7 do
    for i := 0 to 7 do
    begin
      map[j, i] := IntToStr(0);
 
    end;
 
  // заполним массив красными шариками (вернее 1- потом отрисуем)
  for j := 0 to 3 do
    for i := 0 to 3 do
    begin
      map[j, i] := IntToStr(1);
 
    end;
 
  // заполним массив синими шариками (вернее 2- потом отрисуем)
  for j := 4 to 7 do
    for i := 4 to 7 do
    begin
      map[j, i] := IntToStr(2);
 
    end;
 
  // определение mr-рект области и отрисовка на канву поля шариков из значений массива
  for j := 0 to kletka_x - 1 do
    for i := 0 to kletka_y - 1 do
    begin
      mr := Rect(j * razm_x, i * razm_y,
        j * razm_x + razm_x, i * razm_y + razm_y);
 
      if map[j, i] = '0' then
        Image1.Canvas.StretchDraw(mr, Image2.Picture.Bitmap);
 
      if map[j, i] = '1' then
        Image1.Canvas.StretchDraw(mr, Image3.Picture.Bitmap);
 
      if map[j, i] = '2' then
        Image1.Canvas.StretchDraw(mr, Image4.Picture.Bitmap);
    end;
end;
 
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  // вычисление ячеек исходя из координат по X и Y
  nx := X div razm_x;
  ny := Y div razm_y;
  Caption := ' X = ' + IntToStr(nx) + ', Y = ' + IntToStr(ny);
 
  // показать над какой клеткой мышь
  if map[nx, ny] = '0' then
    Label1.Caption := 'Пустая клетка';
 
  if map[nx, ny] = '1' then
    Label1.Caption := 'Красный шарик';
 
  if map[nx, ny] = '2' then
    Label1.Caption := 'Синий шарик';
end;
 
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  //запоминаем в переменную из массива, где берем шарик
  zapom := map[nx, ny];
 
  //определим исходя из координат X и Y в какой ячейке взяли и запомним
  zap_x := X div razm_x;
  zap_y := Y div razm_y;
end;
 
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // если попытка опустить в пустую клетку то то что запомнили
  // заносим в массив над отпущенной клеткой и тамгде взяли шарик ставим ноль
  if map[nx, ny] = '0' then
  begin
    map[nx, ny] := zapom;
    map[zap_x, zap_y] := '0';
  end;
 
  // определение mr-рект области и отрисовка на канву из значений массива
  // то есть отрисовка перемещенного шарика
  for j := 0 to kletka_x - 1 do
    for i := 0 to kletka_y - 1 do
    begin
      mr := Rect(j * razm_x, i * razm_y,
        j * razm_x + razm_x, i * razm_y + razm_y);
 
      if map[j, i] = '0' then
        Image1.Canvas.StretchDraw(mr, Image2.Picture.Bitmap);
 
      if map[j, i] = '1' then
        Image1.Canvas.StretchDraw(mr, Image3.Picture.Bitmap);
 
      if map[j, i] = '2' then
        Image1.Canvas.StretchDraw(mr, Image4.Picture.Bitmap);
    end;
end;
 
end.
Миниатюры
Игра уголки  
Вложения
Тип файла: rar Уголки_Шарики.rar (191.6 Кб, 59 просмотров)
1
0 / 0 / 0
Регистрация: 11.11.2014
Сообщений: 26
23.09.2015, 22:41  [ТС] 8
Спасибо огромное
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2015, 22:41
Помогаю со студенческими работами здесь

Уголки
Дана квадратная матрица А порядка M. Начиная с элемента А1;1, вы-вести ее элементы следующим...

Уголки в Ворде
Подскажите пожалуйста как снять эти серые уголки в углах? С низу есть такие же, не понимаю что это...

Уголки формы
Доброго всем времени суток! Не подскажете ли, как уголки формы сделать прозрачными? Есть рисунок...

Закончить игру «Уголки»
Помогите пожалуйста Есть такие проблемы: -Рестарт игры не работает(). -Ход не возможен через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru