Показать сообщение отдельно
Старый 01.01.2012, 20:08   #10
mauNgerS
Разработчик
 
Аватар для mauNgerS
 
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений
(для 670 пользователей)
Ответ: Опять проблемы.

Global cursor
Global LClick, mx#, my#; задаём переменные для мыши глобально

; объявляем тип
Type Main
	Field stone; камень
	Field x#, y#; координаты камня
	Field life; жизнь камня
End Type

Graphics3D 800, 600,0,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

cursor=LoadImage("c.bmp")
CreateStone(50); делаем камни

HidePointer 
Repeat
Cls
Mouse()

UpdateStones(); обновляем камни
DrawImage cursor, mx, my

Flip 0
Until KeyHit(1)
End

Function CreateStone(imax%=0)
	For i=1 To imax
		m.Main=New Main; создаём новый элемент типа, далее следует то, что храним в этом элементе
		m\stone=LoadImage("h.bmp"); камень
		
		m\x=Rnd(100,700); координата х
		m\y=Rnd(100,500); координата y

		m\life=10; жизнь
	Next
End Function 

Function UpdateStones()
	For m.Main=Each Main; перебираем тип
		DrawImage m\stone, m\x, m\y
	
		If ImagesCollide (cursor,mx,my,0,m\stone,m\x, m\y, 0) And LClick=2
			m\life=m\life-1
		EndIf
	
		If m\life=0 
			FreeImage m\stone; удаляем каменнь
			Delete m; удаляем элемент типа
		EndIf 
	Next
End Function

Function Mouse(); функция для срабатывания мыши по отпусканию кнопки
	mx=MouseX()
	my=MouseY()

	If LClick=2 LClick=0
	If LClick=0
		If MouseDown(1) LClick=1
	Else 
		If Not MouseDown(1)
			LClick=2
		EndIf
	EndIf
End Function
Тип это как картотека в библиотеке. Элемент типа это карточка и в ней может хранится что угодно.

Когда мы перебираем тип, это как цикл. Только цикл фиксирован, допустим от 0 до 20. А перебор типа перебирает все элементы. По ходу действия программы можно удалять или добавлять элементы, это не вызовет ошибки.

Как-то так
__________________

Последний раз редактировалось mauNgerS, 01.01.2012 в 22:14.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (11.01.2012)