![]() ![]()  | 
	
| Fang | 
                        
			
			  
			
				 Сообщение
					#1				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Захотелось вот попробовать написать тетрис. Думал что просто а вот теперь даже не знаю с чего начать. В сети много исходников, но хотелось бы чтобы объяснили поподробнее. Алгоритм какой нибудь что ли... 
			
			
					
		 | 
	
| Fang | 
                        
			
			  
			
				 Сообщение
					#2				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Ну не ужели никто тетрис не делал?   
			
			
					
		 | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#3				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Ну объясни ты мне, зачем тебе ЕЩЕ ОДИН исходник? Их же и так тысячи !!! Ты лучше приведи неясный тебе фрагмент, и скажи, что именно неясно. 
			
			
					
		 | 
	
| klem4 | 
                        
			
			  
			
				 Сообщение
					#4				
			 
		 | 
	
        	
        		![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация:    44           	 | 
       
			
			 Цитата(Fang @ 2.10.2005 15:35) Ну не ужели никто тетрис не делал?   Если бы ты воспользовался поиском или просто пролистал раздел игры, то штук 5 разнообразеых тетрисов ты бы точно нашел <_< Что значит алгорим к тетрису ?Найди исходник попроще с комментами, да ковыряйся в нем ... Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";' 
					
		 | 
	
| Guest | 
                        
			
			  
			
				 Сообщение
					#5				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Цитата Что значит алгорим к тетрису ? Ну не алгоритм, а так... основные понятия. Что такое стакан и т.д. в кратце. Цитата Найди исходник попроще с комментами, да ковыряйся в нем ... Да вот что то попроще найти не могу все с наворотами, с графикой и т.д.  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#6				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Ты что, издеваешься? Какой же тетрис БЕЗ ГРАФИКИ? Ты еще без компьютера попробуй сделать...  <_< 
			
			
					
		 | 
	
| virt | 
                        
			
			  
			
				 Сообщение
					#7				
			 
		 | 
	
        	
        		![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 419 Пол: Мужской Репутация:    6           	 | 
       
			
			 тетрис без графики ,т.е. по реалу -- игрушки для архитекторов. 
			
			--------------------  | 
	
| AlienEmperor | 
                        
			
			  
			
				 Сообщение
					#8				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация:    0           	 | 
       
			
			 Ну ладно, ладно... Наскочили на человека... Злые вы все! На самом деле тетрис без графики - это как раз нормально. Короче, слухай сюды: все что происходит на экране всего лишь отображение того, что происходит в памяти: самый простой вариант тетриса: текстовый режим - есть у тебя массив, который и представляет собой "стакан":  
			
			|000000| Mas[I,J] = [0,0,0,0,0] |000000| [0,0,0,0,0] |000000| [0,0,0,0,0] |000000| ----- |000000| [0,0,0,0,0] Далее, есть фигура: 0,0,1,0,0 0,0,1,0,0 0,0,1,0,0 (столько нулей - для "вращения") 0,0,1,0,0 Так вот: берешь фигуру (тоже массив) и заполняешь ей "стакан" ("ставишь наверх"), затем, с задержкой опускаешь до того момента, когда ниже 1 есть другая 1, или когда фигура достигает самого "дна стакана". Остановилась - присваиваешь в стакане единицы фигуры. Далее - новая фигура. После остановки очередной фигуры проверяешь - есть ли линия в стакане: если есть - обнуляешь ее. В принцыпе, все: как уж ты сделаешь, с графикой, без (может у тебя фигуры будут из "*" состоять это уже не важно. Сообщение отредактировано: AlienEmperor - --------------------  Все в жизни ботва... Кроме пчел! 
					
		 | 
	
| SmOuk | 
                        
			
			  
			
				 Сообщение
					#9				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 7 Пол: Мужской Реальное имя: Юрий Репутация:    0           	 | 
       
			
			 Люди, подскажите мне как сделать демо режим в тетрисе, т.е. чтоб комп играл сам с собой....  то я уже голову поломал.. 
			
			
					
		 | 
	
| Бродяжник | 
                        
			
			  
			
				 Сообщение
					#10				
			 
		 | 
	
| 
        	
        		 Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация:    3           	 | 
       
			
			 Первое, что пришло в голову. 
			
			
					
		После того, как сгенерена очередная фигурка, "в уме" проверить все варианты ее падения (с учетом горизонтального положения и разворота). Каждый вариант оценивается по количеству непустых рядов после падения фигурки и упаковки стакана. Выбирается оптимальный вариант и компьютер уже в реал-тайме пытается его провернуть, при необходимости двигая и разворачивая фигуру. Сообщение отредактировано: Бродяжник -  | 
	
| Gothic_Snake | 
                        
			
			  
			
				 Сообщение
					#11				
			 
		 | 
	
        	
        		![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Реальное имя: Алексей Репутация:    0           	 | 
       
			
			 Люди, подскажите мне как сделать демо режим в тетрисе, т.е. чтоб комп играл сам с собой.... то я уже голову поломал.. Как вариант: Пишешь процедурку, которая запоминает последовательность изменений массива твоего "стакана", далее.. Запоминаешь реакцию пользователя (твою реакцию).... Вообщем сам проиграй один уровень и запомни все твои действия в файл... Quake2 так и сделан...  | 
	
| SmOuk | 
                        
			
			  
			
				 Сообщение
					#12				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 7 Пол: Мужской Реальное имя: Юрий Репутация:    0           	 | 
       
			
			 Как вариант: Пишешь процедурку, которая запоминает последовательность изменений массива твоего "стакана", далее.. Запоминаешь реакцию пользователя (твою реакцию).... Вообщем сам проиграй один уровень и запомни все твои действия в файл... Quake2 так и сделан... Не, мне надо чтобы фигуры выпадали рандомом.....  | 
	
| GoodWind | 
                        
			
			  
			
				 Сообщение
					#13				
			 
		 | 
	
        	
        		![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация:    16           	 | 
       
			
			 ИИ писать хочешь ? 
			
			-------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать? 
					
		 | 
	
| Gothic_Snake | 
                        
			
			  
			
				 Сообщение
					#14				
			 
		 | 
	
        	
        		![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Реальное имя: Алексей Репутация:    0           	 | 
       |
| SmOuk | 
                        
			
			  
			
				 Сообщение
					#15				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 7 Пол: Мужской Реальное имя: Юрий Репутация:    0           	 | 
       
			
			 Да придётся! Только не подскажите, от чего оттолкнуться? Может где ссылочка на похожую задачу есть? 
			
			
					
		 | 
	
| Meruert | 
                        
			
			  
			
				 Сообщение
					#16				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 1 Пол: Женский Репутация:    0           	 | 
       
			
			 mne nravitsya vse eto! Hochu oznokomitsya poblije!!!! 
			
			
					
		Ya ne delala! A chto? interesno?  | 
	
| Бродяжник | 
                        
			
			  
			
				 Сообщение
					#17				
			 
		 | 
	
| 
        	
        		 Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация:    3           	 | 
       
			
			 Meruert 
			
			
					
		С чем ознакомиться-то? С тетрисом?  | 
	
| SmOuk | 
                        
			
			  
			
				 Сообщение
					#18				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 7 Пол: Мужской Реальное имя: Юрий Репутация:    0           	 | 
       
			
			 Препод разрешил сделать демо мультиком. 
			
			
					
		Gothic_Snake Цитата Как вариант: Пишешь процедурку, которая запоминает последовательность изменений массива твоего "стакана", далее.. Запоминаешь реакцию пользователя (твою реакцию).... Вообщем сам проиграй один уровень и запомни все твои действия в файл... Не подскажешь алгоритм процедурки? Или примерчик выложи.. Плиз  | 
	
| Бродяжник | 
                        
			
			  
			
				 Сообщение
					#19				
			 
		 | 
	
| 
        	
        		 Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация:    3           	 | 
       
			
			 Надо думать, что в любом случае алгоритм включает в себя рисование/выпечатывание пустых или заполненных клеточек стакана. Так вот, можно сделать следующее: всякий раз, когда это происходит, записывать в файл какой-нибудь код, скажем, 1, а после него координаты выводимой клеточки и ее цвет. А там, где в программе стоит задержка, записывать в файл другой код, скажем, 0. Вот и все. Потом считываем этот файл, и если встречаем код 1, то считываем координаты и цвет, и рисуем клеточку. А когда встречаем 0, делаем задержку. И будет вам счастье. 
			
			
					
		Или еще лучше. Там, где стоит ввод с клавиатуры, записываем код клавиши в файл (или -1, если ничего не нажали). А в демо версии вместо ввода с клавиатуры ставим чтение из файла, или выборку кода из заранее считанного массива. А все остальное оставляем по-старому. В общем, есть варианты. Сообщение отредактировано: Бродяжник -  | 
	
| SmOuk | 
                        
			
			  
			
				 Сообщение
					#20				
			 
		 | 
	
| 
        	
        		 Группа: Пользователи Сообщений: 7 Пол: Мужской Реальное имя: Юрий Репутация:    0           	 | 
       
			
			 Бродяжник  
			
			
					
		Спасибо... Вроде несложный алгоритм.. Буду пробовать.  | 
	
![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 14:20 |