Задача: сделать крестики - нолики для двоих на безграничном поле, выигрывает, тот кто посптаит 5 в ряд.
Подскажите как сделать, чтобы поле увеличивалось вместе с окном.
И как осуществить проверку 5ти в ряд.
   Спасибо.
			
			
					
		Прежде чем задать  вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
| T2D | 
                        
			
			  
			
				 Сообщение
					#1				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Задача: сделать крестики - нолики для двоих на безграничном поле, выигрывает, тот кто посптаит 5 в ряд. 
			
			
					
		Подскажите как сделать, чтобы поле увеличивалось вместе с окном. И как осуществить проверку 5ти в ряд. Спасибо.  | 
	
![]() ![]()  | 
	
| Бравый генерал | 
                        
			
			  
			
				 Сообщение
					#2				
			 
		 | 
	
| 
        	
        		 Новичок ![]() Группа: Пользователи Сообщений: 39 Пол: Мужской Реальное имя: Василий Репутация:    -2           	 | 
       
			
			 Проверка на наличие пяти меток в ряд. Сразу обозначим "пять" - понятием "выигрышное количество" (ВК). Нам нужно проверить наличие ВК меток в ряд по горизонтали, по вертикали, по диагонали, наклоненной влево, и по диагонали, наклоненной вправо. Допустим игровое поле у нас задается массивом целых чисел: 
			
			
					
		a: Array [1..10,1..10] of Byte; Допустимые значения элементов этого массива: 0 - поле пусто, 1 - на поле "крестик", 2 - на поле "нолик". (Значения могут быть и другие - это не принципиально, важно то, что они, естественно, должны быть различными Function won(X,Y,P: Byte): Boolean; где X - номер столбца массива в котором находится ячейка, куда игрок собирается поставить свою метку, Y - строка... , а P - значение поля, соответствующее метке игрока, совершающего ход (т.е. если P = 1, то в нашем случае это "крестик"). Рассмотрим случай по горизонтали. Function won(x,y,p: Byte): Boolean; i,j - границы горизонтального интервала, который полностью заполнен метками P, и который содержит поле проверяемое функцией. Изначально эти границы совпадают. Рассматриваем метки слева от нашего поля: если слева от левой границы интервала стоит метка P, то подвигаем левую границу влево. Так же мы поступаем и с правой границей: если справа от правой границы интервала стоит метка P, то подвигаем правую границу вправо. Примечание: так как игра изначально начинается с пустого поля, то размер интервалов при проверке не будет превышать 2*ВК-1, поэтому не стОит делать проверку на превышение размером интервала ВК - оно все равно почти не повлияет на время выполнения. Теперь мы "расширяем" нашу функцию для проверок остальных направлений. Думаю, разобраться в этом "расширении", а также связать массив A с игровым полем не должно вызвать сложностей. Вот полный код функции: Function won(x,y,p: Byte): Boolean; P.S. Цитата Подскажите как сделать, чтобы поле увеличивалось вместе с окном. ЧТО должно изменяться - размер ячеек или их количество? Сообщение отредактировано: volvo -  | 
	
 T2D   Курсовая: крестики - нолики   2.05.2006 20:13
 
 Гость   Должно изменяться количество ячеек   3.05.2006 11:53
 
 Бравый генерал   Все просто.
width, height - ширина и высота поля, …   4.05.2006 23:37
 
 Гость   Я так и делал, только у меня почему то при очень м…   5.05.2006 21:16
 
 Гость   Я использую такуб процедуру, но получается не очен…   8.05.2006 21:04
 
 Гость   Не работает твой код пяти в ряд. Вот процедура и ф…   12.05.2006 17:22![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 9:38 |