Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 15.01.2012, 19:11   #46
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Опять проблемы.

Выходит, что так.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 15.01.2012, 20:01   #47
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Function UpdateStones()
	For m.Main=Each Main
		DrawImage m\stone, m\x, m\y
	    distance=Sqr((m\x-x)*(m\x-x)+(m\y-y)*(m\y-y))  
		If ImagesCollide (cursor,mx,my,0,m\stone,m\x, m\y,0) And LClick=2
			m\life=m\life-1
			lol=1
		EndIf
	
		If m\life=0 
			FreeImage m\stone
			Delete m
		EndIf 
	Next
		If KeyDown(2) Then 
		m.Main= New Main
		m\x=MouseX()
		m\y=MouseY()
		m\stone=LoadImage("stone.bmp")
		EndIf		
End Function
Опять что-то не так. Камень всё время двигается за мышкой
(Offline)
 
Ответить с цитированием
Старый 15.01.2012, 20:18   #48
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Опять проблемы.

А ты уверен, что это происходит здесь? Вряд ли KeyDown(2) все время возвращает истину. Поищи по коду, "закоментируй" подозрительные инструкции и т.д.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 15.01.2012, 20:28   #49
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Да, это здесь, я только здесь писал. На счёт KeyDown(2) да, не всегда истинна но это легко исправляется. Например:
Function UpdateStones()
	For m.Main=Each Main
		DrawImage m\stone, m\x, m\y
	    distance=Sqr((m\x-x)*(m\x-x)+(m\y-y)*(m\y-y))  
		If ImagesCollide (cursor,mx,my,0,m\stone,m\x, m\y,0) And LClick=2
			m\life=m\life-1
			lol=1
		EndIf
	
		If m\life=0 
			FreeImage m\stone
			Delete m
		EndIf 
	Next
		If KeyDown(2) Then 
                a=1
                endif
                if a=1 then
		m.Main= New Main
		m\x=MouseX()
		m\y=MouseY()
		m\stone=LoadImage("stone.bmp")
		EndIf		
End Function
Ну как-то так. Но тогда нажмёшь на "1", то камень появится на х и у мышки и будет за ней двигаться. Хотя он должен 1 раз взять и присвоить себе координаты мышки
(Offline)
 
Ответить с цитированием
Старый 15.01.2012, 20:42   #50
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Опять проблемы.

Зачем надо, чтобы всегда была истинна? Я просто предполагал причину появления камней.
Необходимо ведь, чтобы камень появился однократно?

А если при создании камня, сделать m\life, например, 100?

А KeyDown надо переделать на KeyHit.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 15.01.2012, 21:07   #51
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Да, как раз в этом и была проблема. Он то создавался, но сразу рушился т.к. m\life был равен нулю Тогда такой способ, видимо, очень хорош в создании редакторов уровней. И клеточек нету, и сохранять удобно.
(Offline)
 
Ответить с цитированием
Старый 15.01.2012, 21:25   #52
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Опять проблемы.

Сообщение от Nikich Посмотреть сообщение
То есть единственный способ это использовать after,before,first и last?
Обождите товарищи!
Делал я dll-ку - внесение списка типов в массив. В проверки выводил список обратно: были цифры 1,2,3 и т.д.
Значит брал я Entity из массива так
Terrain.WorldMap=Object.WorldMap(GetHandle(Obj))

Получается:
ТвойОбъект.ТвойТип=Object.ТвойТип(GetHandle(3))
выдаст объект под номером 3

Проверил:
Terrain.WorldMap=Object.WorldMap(GetHandle(2))
PositionEntity Terrain\mesh,-5,-1,-5
да он переместился!

Так, стоп!
GetHandle() это моя личная функция (которой нет в B3D), для вывода из номера ячейки..

Ну если очень нужно, то выход будет - делать массив с Handle на объекты.
(Offline)
 
Ответить с цитированием
Старый 15.01.2012, 21:48   #53
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Опять проблемы.

Сообщение от Nikich Посмотреть сообщение
Да, как раз в этом и была проблема. Он то создавался, но сразу рушился т.к. m\life был равен нулю Тогда такой способ, видимо, очень хорош в создании редакторов уровней. И клеточек нету, и сохранять удобно.
Напиши подробно что ты хочешь сделать (какую игру).. Для чего камни, что с ними делать. Какой игрок и управление и т.п.
Дай исходник, чтобы попробовать сделать по-своему..
Потом посмотрим на решения (но чтобы не брать готовое, а посмотреть как нужно было делать).
(Offline)
 
Ответить с цитированием
Старый 15.01.2012, 22:31   #54
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Жанр - tds. Игра будет как Stranded 2, только вид сверху. Но строительство будет ближе к Minecraft'y, то есть квадратиками. Сейчас самое важное добавить в игру инвентарь. Исходники смогу дать только завтра. Ну, а камни для строительства или создания вещей.
(Offline)
 
Ответить с цитированием
Старый 15.01.2012, 23:30   #55
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Исходник и все файлы.

Последний раз редактировалось Nikich, 05.02.2012 в 22:16.
(Offline)
 
Ответить с цитированием
Старый 16.01.2012, 08:57   #56
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: Опять проблемы.

Function UpdateStones()
	For m.Main=Each Main
		DrawImage m\stone, m\x, m\y
	    distance=Sqr((m\x-x)*(m\x-x)+(m\y-y)*(m\y-y))  
		If ImagesCollide (cursor,mx,my,0,m\stone,m\x, m\y,0) And LClick=2
			m\life=m\life-1
			lol=1
		EndIf
	
		If m\life=0 
			FreeImage m\stone
			Delete m
		EndIf 
	Next
		If KeyDown(2) Then 
                a=1
                else
                a=0
                endif
                if a=1 then
		m.Main= New Main
		m\x=MouseX()
		m\y=MouseY()
		m\stone=LoadImage("stone.bmp")
		EndIf		
End Function
А лучше KeyDown(2) замени на KeyHit(2)... если не хочеш случайно камни пачками штамповать...
П.с. вот чуть лучше по моим соображениям, если я правильно понял что ты от функции хочеш ))
Global Images%[10];прозапас чуть больше чем надо...
Images[0]=LoadImage("stone.bmp")

Function UpdateStones()
 	For m.Main=Each Main
		DrawImage Images[0], m\x, m\y
	    distance=Sqr((m\x-x)*(m\x-x)+(m\y-y)*(m\y-y))  
		If ImagesCollide (cursor,mx,my,0,m\stone,m\x, m\y,0) And LClick=2
			m\life=m\life-1
			lol=1
		EndIf
	
		If m\life=0 
			FreeImage m\stone
			Delete m
		EndIf 
	Next
	If KeyHit(2)
		m.Main= New Main
		m\x=MouseX()
		m\y=MouseY()
		m\life=10;Думаю ты чёто забыл))
	EndIf		
End Function
(Offline)
 
Ответить с цитированием
Старый 16.01.2012, 09:16   #57
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: Опять проблемы.

Сообщение от LLI.T.A.L.K.E.R. Посмотреть сообщение

Так, стоп!
GetHandle() это моя личная функция (которой нет в B3D), для вывода из номера ячейки..
В B3D все есть (Правда называется она Handle%(Тип%) ):
Global ClientsHandles[10]
Type Client
	Field Login$
End Type

For Clients%=0 to 10;Создадим 10 игроков и присвоим им имена Player #0...Player #10.
	CrP.Client=New Client
	CrP\Login$="Player #"+Clients%
	ClientsHandles[Clients]=Handle(CrP)
next

For Clients%=0 to 10;Напечатаем имена всех игроков на экране.
	Test.Client=Object.Client(ClientsHandles[Clients%])
	If Test<>Null;Если не уверен что объект существует то проверяй его наличие, иначе будет Mav...
	   Print Test\Login$
	EndIf
Next
Test.Client=Object.Client(ClientsHandles[5]);Напечатаем имя игрока хэндл какого находится в ClientsHandles[5]
If Test<>Null
   Print Test\Login$
EndIf

waitkey()
(Offline)
 
Ответить с цитированием
Старый 16.01.2012, 09:32   #58
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Опять проблемы.

Про картинку. Как я понял, она вообще одна.
А в таком случае копировать ее в каждый экземпляр, да еще и загружать каждый раз из файла, абсолютно бессмысленно.

Проще для рисования каждого камня обращаться к одной картинке,
в виде глобальной переменной или параметра передаваемого в функцию обновления камней.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Crayzi (16.01.2012)
Старый 16.01.2012, 09:42   #59
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Опять проблемы.

For Clients%=0 to 10
Создаст 11.
Надо так
For Clients%=1 to 10
(Offline)
 
Ответить с цитированием
Старый 16.01.2012, 09:46   #60
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Ответ: Опять проблемы.

Сообщение от Nex Посмотреть сообщение
Создаст 11.
Надо так
Я просто не стал заморачиватся)))
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:27.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com