|
2D-программирование Вопросы, касающиеся двумерного программирования |
30.12.2006, 00:38
|
#16
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Re: Курсор
Да, кстати, HolyDel, звёзды создаются за галактикой. А надо перед. А ещё там долно быть два типа звёзд. Один движытся быстро, другой по медленнее. Но это не так важно. Как я уже сказал я сам всё сделал. Правда используя картинку..
|
(Offline)
|
|
30.12.2006, 18:05
|
#17
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Re: Курсор
Вот сижу и думаю. как сделать так, чтоб при нажатии кнопки ниже появлялся текст и не исчезал, пока не нажмёш другую кнопку. Я нажимаю, он появляется, я отжимаю, он исчезает.
;==================================================================
; Star Trash
; Космическая стрелялка. Дата начало работы 27.12.06
;=================================================
Graphics 800,600,32,2
SetBuffer BackBuffer()
;шрифт
font=LoadFont("Arial Cyr",30,1)
Tex=LoadFont("Arial Cyr",20,1)
dat=LoadFont("Arial Cyr",13,1)
;Фон меню
img=LoadImage("data/menu/galaxi.jpg")
;звёзы
star=LoadImage("Data/menu/fon.png")
star2=LoadImage("Data/menu/fon2.png")
;Логотип
Logo=LoadImage("data/menu/logo.bmp")
MaskImage logo,0,0,0 ; Маска
;Музыка
sam=PlayMusic("data/sound/menu.mp3") ;загрузка музыки
;курсор
Global curs=LoadImage("data/menu/cursor.bmp");Загруска курсора
HidePointer; Курсор невидим
;Загрузка кнопки
knop=LoadAnimImage("Data/menu/knop.png",175,40,0,2)
knop2=knop
knop3=knop
knop4=knop
; Загрузка диалогового окна
windialog=LoadImage("data/menu/windialog.png")
;цикл
Repeat
Cls()
DrawImage(img, 0, 0);Позиция галактики
TileImage star,0,qq:qq=qq- -3
TileImage star2,0,hh:hh=hh- -1
DrawImage(logo, 100,50);позиция логотипа
DrawImage(knop, 310,200);позиция кнопки1
DrawImage(knop2, 310,245);позиция кнопки2
DrawImage(knop3, 310,290);позиция кнопки3
DrawImage(knop4, 310,335);позиция кнопки4
DrawImage(windialog, 100,385);позиция логотипа
; Если если курсор над кнопой Новая игра и нажата мыш то..
If MouseX()>310 And MouseY()>200 And MouseX()<485 And MouseY()<240
DrawImage(knop, 310,200,1)
If MouseDown(1)
TileImage star2,0,hh:hh=hh- 3 ; Проверить работает ли кнопка
EndIf
EndIf
;Если если курсор над кнопой Помощь и нажата мыш то..
If MouseX()>310 And MouseY()>245 And MouseX()<485 And MouseY()<285
DrawImage(knop2, 310,245,1)
If MouseDown(1)
;Текст Описание
SetFont tex Color 255,255,255:Text 160,410,"Помощь:",1,1
SetFont tex Color 255,255,255:Text 175,426,"w - Вперёд",1,1
SetFont tex Color 255,255,255:Text 167,442,"s - Назад",1,1
SetFont tex Color 255,255,255:Text 168,458,"a - Влево",1,1
SetFont tex Color 255,255,255:Text 172,474,"d - Вправо",1,1
SetFont tex Color 255,255,255:Text 225,490,"Кнопка мыши 1 - пушка",1,1
SetFont tex Color 255,255,255:Text 229,506,"Кнопка мыши 2 - ракеты",1,1
EndIf
EndIf
; Если если курсор над кнопой Авторы и нажата мыш то..
If MouseX()>310 And MouseY()>290 And MouseX()<485 And MouseY()<330
DrawImage(knop3, 310,290,1)
If MouseDown(1)
;Текст Авторы
SetFont tex Color 255,255,255:Text 150,410,"Автор:",1,1
SetFont tex Color 255,255,255:Text 200,426,"Миха aka Atomikc",1,1
SetFont tex Color 255,255,255:Text 190,442,"[email protected]",1,1
SetFont tex Color 255,255,255:Text 268,458,"________________________________",1,1
SetFont tex Color 255,255,255:Text 380,484,"Отдельное спасибо Shad0w agent, за предоставление семплов",1,1
SetFont tex Color 255,255,255:Text 385,500,"А также сайту www.Boolean.name и всем тем, кто мне помогал...",1,1
EndIf
EndIf
;Если если курсор над кнопой Выход и нажата мыш то выход
If MouseX()>310 And MouseY()>335 And MouseX()<485 And MouseY()<375
DrawImage(knop4, 310,335,1)
If MouseDown(1)
:Exit
EndIf
EndIf
;Текст кнопок
SetFont font:Color 0,170,255:Text 399,219,"Новая игра",1,1
SetFont font:Color 0,170,255:Text 399,264,"Помощь",1,1
SetFont font:Color 0,170,255:Text 399,309,"Авторы",1,1
SetFont font:Color 0,170,255:Text 399,354,"Выход",1,1
;Текст версии игры
SetFont dat Color 255,255,255:Text 615,560,"Star Trash. Версия игры 0.1",1,1
DrawImage(curs, MouseX(), MouseY());Позиция Курсора
If ChannelPlaying(sam)=0 Then sam=PlayMusic("data/sound/menu.mp3") ; Играть заного
Flip()
;----------------------------
Until KeyDown(1)
|
(Offline)
|
|
30.12.2006, 18:29
|
#18
|
Разработчик
Регистрация: 08.06.2006
Сообщений: 412
Написано 13 полезных сообщений (для 4 пользователей)
|
Re: Курсор
If MouseX()>310 And MouseY()>200 And MouseX()<485 And MouseY()<240
|
O_o
А как же ImagesOverlap?Через него ведь проще!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.12.2006, 23:06
|
#19
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Re: Курсор
А что ты хотел от новечка. Я всё методом волшебного тыка делаю. Работает значит правильно. Вот стану более менее на ноги, потом и буду высматривать альтернативные варианты. А щя где чё найду тем и пользуюсь.
|
(Offline)
|
|
31.12.2006, 02:08
|
#20
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
Re: Курсор
создай переменную, допустим, stat$ и туда записывай текущий текст.
и выводи соответственно на экран text,x,y,stat$
чтобы ничего не отображалось задай stat$=""
|
(Offline)
|
|
31.12.2006, 13:38
|
#21
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Re: Курсор
Ну вопервых с НАСТУПАЮЩИМ ВАС 2007-М!!!
Разобрался я с менюшко. Создал пару переменных Х и У.
Вот весь код.
;==================================================================
; Star Trash
; Космическая стрелялка. Дата начало работы 27.12.06
;=================================================
;Инициализация графики
Graphics 800,600,32,2
SetBuffer BackBuffer()
;Глобал
Global x,y
;шрифт
font=LoadFont("Arial Cyr",30,1)
Tex=LoadFont("Arial Cyr",20,1)
dat=LoadFont("Arial Cyr",13,1)
;Фон меню
img=LoadImage("data/menu/galaxi.jpg")
;звёзы
star=LoadImage("Data/menu/fon.png")
star2=LoadImage("Data/menu/fon2.png")
;Логотип
Logo=LoadImage("data/menu/logo.bmp")
MaskImage logo,0,0,0 ; Маска
;Музыка
sam=PlayMusic("data/sound/menu.mp3") ;загрузка музыки
;курсор
Global curs=LoadImage("data/menu/cursor.bmp");Загруска курсора
HidePointer; Курсор невидим
;Загрузка кнопки
knop=LoadAnimImage("Data/menu/knop.png",175,40,0,2)
knop2=knop
knop3=knop
knop4=knop
; Загрузка диалогового окна
windialog=LoadImage("data/menu/windialog.png")
;цикл
Repeat
Cls()
DrawImage(img, 0, 0);Позиция галактики
TileImage star,0,qq:qq=qq- -3
TileImage star2,0,hh:hh=hh- -1
DrawImage(logo, 100,50);позиция логотипа
DrawImage(knop, 310,200);позиция кнопки1
DrawImage(knop2, 310,245);позиция кнопки2
DrawImage(knop3, 310,290);позиция кнопки3
DrawImage(knop4, 310,335);позиция кнопки4
DrawImage(windialog, 100,385);позиция логотипа
; Если курсор над кнопой Новая игра и нажата мыш то запустить игру
If MouseX()>310 And MouseY()>200 And MouseX()<485 And MouseY()<240
DrawImage(knop, 310,200,1)
If MouseDown(1)
EndIf
EndIf
;Если если курсор над кнопой Помощь и нажата мыш то показать помощь и стереть другое
If MouseX()>310 And MouseY()>245 And MouseX()<485 And MouseY()<285
DrawImage(knop2, 310,245,1)
If MouseDown(1)
x=1
y=0
EndIf
EndIf
If x=1 SetFont tex Color 255,255,255:Text 160,410,"Помощь:",1,1 SetFont tex Color 255,255,255:Text 175,426,"w - Вперёд",1,1 SetFont tex Color 255,255,255:Text 167,442,"s - Назад",1,1 SetFont tex Color 255,255,255:Text 168,458,"a - Влево",1,1 SetFont tex Color 255,255,255:Text 172,474,"d - Вправо",1,1 SetFont tex Color 255,255,255:Text 225,490,"Кнопка мыши 1 - пушка",1,1 SetFont tex Color 255,255,255:Text 229,506,"Кнопка мыши 2 - ракеты",1,1
If x=0 Then SetFont tex Color 255,255,255:Text 160,410," ",1,1
; Если если курсор над кнопой Авторы и нажата мыш то паказать авторов и стереть другое
If MouseX()>310 And MouseY()>290 And MouseX()<485 And MouseY()<330
DrawImage(knop3, 310,290,1)
If MouseDown(1)
x=0
y=1
EndIf
EndIf
If y=1 Then SetFont tex Color 255,255,255:Text 150,410,"Автор:",1,1 SetFont tex Color 255,255,255:Text 200,426,"Миха aka Atomikc",1,1 SetFont tex Color 255,255,255:Text 190,442,"[email protected]",1,1 SetFont tex Color 255,255,255:Text 268,458,"________________________________",1,1 SetFont tex Color 255,255,255:Text 380,484,"Отдельное спасибо Shad0w agent, за предоставление семплов",1,1 SetFont tex Color 255,255,255:Text 385,500,"А также сайту www.Boolean.name и всем тем, кто мне помогал...",1,1
If y=0 Then SetFont tex Color 255,255,255:Text 160,410," ",1,1
;Если если курсор над кнопой Выход и нажата мыш то выход
If MouseX()>310 And MouseY()>335 And MouseX()<485 And MouseY()<375
DrawImage(knop4, 310,335,1)
If MouseDown(1)
:Exit
EndIf
EndIf
;Текст кнопок
SetFont font:Color 0,170,255:Text 399,219,"Новая игра",1,1
SetFont font:Color 0,170,255:Text 399,264,"Помощь",1,1
SetFont font:Color 0,170,255:Text 399,309,"Авторы",1,1
SetFont font:Color 0,170,255:Text 399,354,"Выход",1,1
;Текст версии игры
SetFont dat Color 255,255,255:Text 615,560,"Star Trash. Версия игры 0.1",1,1
DrawImage(curs, MouseX(), MouseY());Позиция Курсора
If ChannelPlaying(sam)=0 Then sam=PlayMusic("data/sound/menu.mp3") ; Играть заного
Flip()
;----------------------------
Until KeyDown(1)
|
(Offline)
|
|
04.01.2007, 02:05
|
#22
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Re: Курсор
Ещё вопрос. Вот картинка курсора, виндовсовский курсор находится в углу картинки. Как её поставить в центор этой самой картинки.
|
(Offline)
|
|
05.01.2007, 23:23
|
#23
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Re: Курсор
Сам нашол. MidHandle curs2. рисует curs2 вцентре курсора
|
(Offline)
|
|
04.04.2007, 06:32
|
#24
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Re: Курсор
Вот я столкнулся с ещё одной проблемой. Есть у меня корабль с координатами XY и пушки на нем с координатами X+Число У+Число.
Так же есть курсор. Вот. Отсюда два вопроса. Как изменить точку вращения обьекта. Тоесть не MidHandle А своё???
И втарое. Как повернуть пушку в сторону курсора. В школе надо было не спать а учить. Теперь мучаюсь. Оч надеюсь на вашу помощь...
|
(Offline)
|
|
05.04.2007, 01:58
|
#25
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Курсор
1. незнаю смотри хелп.
2. atan2((canon_x-mousex()),(mousey()-canon_y)) - ф-я вернет угол. дальше на етот угол крути пушку (возможно придется знаки минуса сувать в параметры atan2, эксперементировать надо)
|
(Offline)
|
|
21.04.2007, 23:36
|
#26
|
Бывалый
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений (для 257 пользователей)
|
Re: Курсор
Вот и добрался я в своём проэкте до ракет...
Как реализовать такую вещь: Куча врагов и один ты. Все перемещаются... Курсор свободно передвигается по экрану, и если нажать клавишу, то вылитает ракета.
А теперь вопрос. Как сделать так, чтоб ракета летела к объекту котрый ближе всех находится к курсору, при этом поворачиваясь на нужный угол.
Вот пример. Синяя линия- это маршрут следования ракеты. Ракета по этому маршруту должна лететь.
|
(Offline)
|
|
22.04.2007, 00:58
|
#27
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 823
Написано 101 полезных сообщений (для 205 пользователей)
|
Re: Курсор
Как бы сделал я:
1)определить расстояние от курсора до объектов-врагов, если есть координаты курсора и врагов, дума, труда не составит.
r=sqrt((x_rocket-x_enemy)^2+(y_rocket-y_enemy)^2)
2)Определяем расстояния до всех объектов в локации(или, как вариант, всех объектов в заданной области вокруг курсора), находим из них минимальное.
3)задаем ракете начальный вектор скорости
4)в каждый момент времени прибавляем к вектору скорости ракеты вектор малой величины(по крайней мере меньше, чем вектор скорости), направленный от ракеты к выбранному объекту.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:53.
|