forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Задачка!!! (http://forum.boolean.name/showthread.php?t=1885)

Halk-DS 18.12.2006 01:56

Re: Задачка!!!
 
Я незнаю или чтолибы ето меняет!!! Но в игре заставки токо вначяле, и в случяе проиграша!!! Тоесть невсегда, но вконце!!! Игра будет автоматически выключяться в случяе проиграша!!! И еше, для чево нужно указывать
while movieplaying(movie) and keydown(57)=0
Получяецца, заставка будет играть пока нажат пробел!!!

HolyDel 18.12.2006 02:11

Re: Задачка!!!
 
получается что затавку можно будет пропустить нажав пробел, или она сама кончится.

Halk-DS 18.12.2006 02:21

Re: Задачка!!!
 
Знаешь! Говорят, "Как хорошо помагать людям!!!", А я скажу, что "Как харашо, когда помагают тебе!!!!" !!!!!!!!

impersonalis 19.12.2006 14:47

Re: Задачка!!!
 
В учебнике Скавена(?) был описан способ организации именно с заставками, только там подразмевалось не физическое выделение N буферов, а селекция алгоритма рисования на основе флага. Т.е. при флаг=1 рисуем квадрат, при флаг=2 рисуем круг и т.п.
Правда мне больше нравится вызов функций. Хотя с другой стороны это накладывает свои трудности: необходимо следить за адекватным возвращением и организовать логику так, чтобы это не повлекло переполнение стека возвратов, утерянные модели и разнообразный мусор. Мою привычку объясняет любовь к С++ и отсутствие лит-ры по b3d в то время, когдя я его изучал.

Halk-DS 21.12.2006 02:14

Re: Задачка!!!
 
А у меня ешо вопросы!!!! Гы!!!
1.А хотите я вам покажу свою игру???
2.А если я вложу две маленькие песенки (до 50КВ вместе) в формате миди, хтоныть может их перефоратить на МР3 ???
3.Как сделать ефект взрива, если есть несколько его кадров в одном рисунке???

HolyDel 21.12.2006 02:21

Re: Задачка!!!
 
1. Ессено хотим!
2. ХЗ
3. уточнить нада, 2д, 3д режим?
select режим
case 2д
загружаем анимированный рисунок
loadanimimage()
рисуем рисунок изменяя кадр drawimage explode,x,y,frame
case 3д
загружаем анимированную текстуру
loadanimtexture()
создаем спрайт
в главном цикле натягиваем на спрайт(billboard) текстуру изменяя фраме
entitytexture spr,expl,frame
текстуру желательно грузить добавляя к флагу 256
end select
подробнее скажу только как узнаю режим игры(2d, 3d).

Halk-DS 21.12.2006 16:09

Re: Задачка!!!
 
Вложений: 1
Игра в 3Д стиле!!! Сюжет такой!!! Ти ставишь мину, какойто парень наривается и БАХ!!! Ето то чем я хотел пользоваться:
If entitycillided() Then ........ EndIf
Токо ефект недолжен повторяться!!!
Раз, и ждет колизии!!!
Здесь песенки и аним.текстура!!! :-)

Halk-DS 23.12.2006 01:28

Re: Задачка!!!
 
Еще, баг!!! Достали блин!!! Я незнаю как дклать так, чтоб по окончании звука, он повторялся!!! И если ето недолго, может раскажите, как делать меню??? Обичное!!!

HolyDel 23.12.2006 01:55

Re: Задачка!!!
 
ну стандартно
[blitz]
Graphics 640,480,32,2
SetBuffer BackBuffer()
[/blitz]
создаем массив под пункты меню: название пункта и цвет
[blitz]
Graphics 640,480,32,2
SetBuffer BackBuffer()
Dim item$(10)
Dim iColor(10)
[/blitz]
заполняем пункты, инициализируем необходимые переменные и грузим шрифт.
[blitz]
item(0)="New Game"
item(1)="Options"
item(2)="About"
item(3)="Exit"
ttmi=3
SetFont LoadFont("Courier New Cyr",24,1)
[/blitz]
ttmi - количество пунктов.

ну и собственно

[blitz]
While 1
Cls
y=50
si=0
For i=0 To ttmi
If iColor(i)<255 Then iColor(i)=iColor(i)+24
If iColor(i)>255 Then iColor(i)=255
If Abs(MouseX()-320)<100 And Abs(MouseY()-y)<10 Then si=i:iColor(i)=iColor(i)-32
If iColor(i)<0 Then iColor(i)=0
Color 255,iColor(i),iColor(i)
Text 320,y,item(i),1,1
y=y+24
Next

If MouseDown(1)
Select si
Case 0
Exit
Case 3
End
End Select
EndIf

Color 0,255,0
Text 10,10,item(si)
Flip
Wend

[/blitz]

цикл, 1 - оно всегда 1, такчто цикл будет крутиться вечно
отчищаем экран, задаем Y - позиция пункта меню по оси Y, присваиваем переменной SI значение 0. переменная SI означает выбранный пункт меню.

запускаем цикл, где перебираем все пункты. там:
увеличиваем значение цвет пункта на 24
проверяем не превысило ли оно 255, если превысило то присваиваем 255
[blitz]
If Abs(MouseX()-320)<100 And Abs(MouseY()-y)<10 Then si=i:iColor(i)=iColor(i)-32
[/blitz]
ето означает что выбран I-тый пункт. уменьшаем значение цвета I-того пункта на 32. выбранный пункт становится i-тым (переменную si помниш?)

далее:
[blitz]
Color 255,iColor(i),iColor(i)
Text 320,y,item(i),1,1
y=y+24
[/blitz]
устанавливаем цвет пункта, чем меньше цвет тем пункт краснее.
рисуем пункт, увеличиваем y на 24 (щтоб следующий пункт рисовался ниже).

[blitz]
If MouseDown(1)
Select si
Case 0
Exit
Case 3
End
End Select
EndIf
[/blitz]
по нажатию на мыш, проверяем выбранный пункт, и в зависимости от значения Si делаем что, то, например если si равно трем (выход) то завершаем работу программы.

[blitz]
Color 0,255,0
Text 10,10,item(si)
[/blitz]
ну это просто чтоб показать что работает.

весь код:
[blitz]
Graphics 640,480,32,2
SetBuffer BackBuffer()

Dim item$(10)
Dim iColor(10)
item(0)="New Game"
item(1)="Options"
item(2)="About"
item(3)="Exit"
ttmi=3
xit=0
SetFont LoadFont("Courier New Cyr",24,1)

While 1
Cls
y=50
si=0
For i=0 To ttmi
If iColor(i)<255 Then iColor(i)=iColor(i)+24
If iColor(i)>255 Then iColor(i)=255
If Abs(MouseX()-320)<100 And Abs(MouseY()-y)<10 Then si=i:iColor(i)=iColor(i)-32
If iColor(i)<0 Then iColor(i)=0
Color 255,iColor(i),iColor(i)
Text 320,y,item(i),1,1
y=y+24
Next

If MouseDown(1)
Select si
Case 0
Exit
Case 3
End
End Select
EndIf

Color 0,255,0
Text 10,10,item(si)
Flip
Wend
[/blitz]

Halk-DS 24.12.2006 15:35

Re: Задачка!!!
 
Спасибо!!! Но как делать звук!!! Я вставляю песню, она играет! А когда она кончяется, я хочю её снова проиграть!!! И некак неполучяется!!! А с тем взривом, тож нелади!!!

Explo=LoadAnimTexture("boomstrip.jpg",256,64,64,0, 39)
BomSprite=CreateSprite()

А в главном цикле пишу

EntityTexture Explo,BomSprite,39

А оно мне ошыбку выдаёт!!!

HolyDel 24.12.2006 20:14

Re: Задачка!!!
 
песня:
chMusic=PlayMusic("Ghost live score.mp3")
в главном цикле
if ChannelPlaying(chMusic)=0 then chMusic=PlayMusic("Ghost live score.mp3")

взрыв:
ессено он тебе будет ошибку выдавать, 39-ого кадра нет. 0..38 - как раз 39 (параметр функции лоаданимтекстуре)
в главном цикле надо ихменять значемине от 0 до 38.
ночью скину пример.

Halk-DS 25.12.2006 02:46

Re: Задачка!!!
 
Спасибо! Окей!!!
От после етого! Зделаю заставки!!! Повтыкаю!!! И выложу игру!!! От я конечно попробую всё сжать, но сейчяс весит около 9МВ!!! Моя первая игра!!! С вашими советами и моими усилиями!!! УРААА!!!!

Halk-DS 26.12.2006 15:17

Re: Задачка!!!
 
А где пример??? :( !!
Я уж повсякому пробовал!!! Но сейчяс спрайт есть, а текстуры на нём нет!!! Белый такой квадратик!!!

HolyDel 27.12.2006 01:22

Re: Задачка!!!
 
Вложений: 2
извиняй, вот:

Halk-DS 28.12.2006 15:23

Re: Задачка!!!
 
Спасибо! Попробую разобраться!!!


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot