PDA

Просмотр полной версии : Посмотрите (движение спрайта на purebasic)



женя999
13.01.2012, 10:33
Вот,прислушался к совету newart и начал заниматься purebasic,по сравнению с visual basic,есть свои плюсы.
Пробывал сделать движение renegade,получается отлично,мерцаний нет,движения плавные.
Теперь попробывал сделать перемещение спрайта диззи.
Посмотрите,если он так будет двигаться ,это нормально ?
Напишите замечания.
Управление стрелками,выход щелчёк мыши по экрану.
влево он не прыгает.
_______________
Игру я не делаю,просто пробую разные способы движения спрайтов.

jerri
13.01.2012, 11:56
не запускается

женя999
13.01.2012, 11:59
Что пишет ?
Должно открыться окно во весь экран 320х240
Пробывал только что на другом компьютере,(кроме офиса там ничего не стоит)-работает

У кого нибудь запустилась ?

null_device
13.01.2012, 12:03
Не запустилось..

thims
13.01.2012, 12:06
Не. Валится при запуске. Как просто (win7), так и в режиме совместимости с winxp.
Более того, на виртуалке с чистым windows xp тоже валится. Разбирайся - чего у тебя там не так.

Rindex
13.01.2012, 12:06
У кого нибудь запустилась ?

У меня запустилось (XP). Но больше в этом дерьме не делай. Если хочешь на РС, то есть Dizzy-AGE. Если на Спектруме, то делай на нём.

thims
13.01.2012, 12:10
Но больше в этом дерьме не делай. Если хочешь на РС, то есть Dizzy-AGE.
+100500

Кстати, раздел форума явно не тот для таких вопросов.

Rindex
13.01.2012, 12:10
Посмотрите,если он так будет двигаться ,это нормально ?

Движения спрайтов правильные, но он не ходит, а скользит по поверхности. Т.е. движения не соответствуют ходу персонажа.

AER
13.01.2012, 12:33
прислушался к совету newart и начал заниматься purebasic
кому он его только непредлагал.

Titus
13.01.2012, 12:46
Движения спрайтов правильные, но он не ходит, а скользит по поверхности. Т.е. движения не соответствуют ходу персонажа.
У меня тоже запустилось на XP. Да, похоже, анимация быстрее, чем перемещение.

jerri
13.01.2012, 13:13
у меня не запустилось
мое запускается
басик под рукой
а это экзешник не запускается

---------- Post added at 14:13 ---------- Previous post was at 14:10 ----------

ваще ничо не пишет
запускается и выключается
сделай в окне чтобы работало

женя999
13.01.2012, 13:31
но он не ходит, а скользит по поверхности.

Блин, если делать чтобы не скользил получается надо через пиксили перепрыгивать,рывки получаются.короче диззи меня измучил.
Тогда надо его перерисовывать.
Почему purebasic дерьмо ? просто конечно надоедает что newart везде его советует. Если бы я не написал что программа на pure basic Вы бы догадались?
jerri пока некогда для окна переделывать.потом.
Странно конечно почему не у всех работает,спрошу на другом форуме.
Спасибо всем.

---------- Post added at 14:31 ---------- Previous post was at 14:30 ----------

Буду всё сначала начинать

Rindex
13.01.2012, 13:45
женя999, прислушайся, что скажу. Мне как-то всё-равно на чём ты игру делать будеть, на пуребейсике, на си или ещё на чём. Главное куда.

1 - Ещё раз говорю, если задумал написать игру для РС, то есть прекрасный редактор в стиле Спектрума (хотя можно в любом стиле сделать, графику меняй и всё) - это Dizzy-AGE (http://yolkfolk.com/dizzyage/download.html). Там уже куча графики и спрайты Диззи уже есть. Вообще-то, там спрайты почти всех героев есть. Titus даже начал немного переводить мануал по этому редактору - http://dizzyage.narod.ru/

2 - Если не устроил пункт 1, но ты всё-равно решил сделать игру для РС, то тогда для ознакомления советую посмотреть на эти игры: Dizzy-1 TUCA (remake) (http://zx.pk.ru/showpost.php?p=193684&postcount=7) со скроллиногом, или Spud's Quest (http://zx.pk.ru/showthread.php?t=15037) без скроллинга. Если чувствуешь, что такое не осилишь, тогда первый пункт в помощь.

3 - Если уж задумал сделать Диззи для Спектрума, выдирай движок из 3-6 игр и твори. Но чувствую не для Спектрума ты игру собрался делать.

P.S. И никогда не делай игру со спектрумовской графикой на весь экран. Это квадратный ужас. Есть же экран 640х480

женя999
13.01.2012, 13:57
Спасибо за совет и за ссылки.
На спектруме я не потяну.
Самое интересное для меня в игре ,это её создание.
ещё раз всем спасибо.

newart
13.01.2012, 14:06
Почему purebasic дерьмо ?
Ну а чего ты еще ожидал услышать от работяги-выпивохи?



просто конечно надоедает что newart везде его советует
Исключительно из благих побуждений. Для меня это инструмент номер 1.


Странно конечно почему не у всех работает
Ничего странного. Ведь 320х240 поддерживают не все мониторы. А ты даже не проверяешь держит монитор это разрешение или нет.

Что касается скорости движения то всё просто.

Титус писал:


Спектрумовский Dizzy в частях 1, 2, 3, 3.5, 4, 5 и 6 движется горизонтальном направлении с дискретностью 4 пиксела. Обновление идет раз в 3 кадра для частей 2-6, и не привязанно к кадрам в 1-й части.

Частота кадров на спектруме 50 герц, разделить на 3 получаем 15.
Так вот ставь командой SetFrameRate(16) и двигай дизика на 4 пикселя за раз = будет 1 в 1 как на спектруме.

---------- Post added at 15:06 ---------- Previous post was at 15:04 ----------

Ну и выложи исходник, тогда по строкам скажу где какая ошибка.

thims
13.01.2012, 14:17
На спектруме я не потяну.
Ну тогда пользуйся человеческим современным инструментарием. Раз уж бейсик хочешь, то Visual Basic 2010 Express (http://www.microsoft.com/visualstudio/ru-ru/products/2010-editions/visual-basic-express/) тебе в помощь.
А еще лучше, сразу разбирайся с XNA GameStudio.

Rindex
13.01.2012, 14:24
Ну а чего ты еще ожидал услышать от работяги-выпивохи?

Ооо, слышу слова прямо-таки Илиты, которая никак на баннер сверху крестик поставить не может, чтобы желающие могли его убрать. :)

Я просто предложил уже готовый движок со множеством спрайтов, но чтобы сделать игру там всё-равно думать надо. И в довесок кинул пару ссылок на игры, которые я считаю отлично сделанными. Но женя999 похоже решил сделать всё сам. Согласен, это гораздо интереснее, но чую выйдет что-то типа этого (http://www.yolkfolk.com/site/games.php?game_id=65), только на большом экране (F4).

newart
13.01.2012, 14:32
то Visual Basic 2010 Express тебе в помощь.
Из пушки по воробьям...

---------- Post added at 15:31 ---------- Previous post was at 15:30 ----------


Я просто предложил уже готовый движок со множеством спрайтов, но чтобы сделать игру там всё-равно думать надо.
Может Жене интересно игру запрограмить а не нарисовать в редакторе?

---------- Post added at 15:32 ---------- Previous post was at 15:31 ----------


Ооо, слышу слова прямо-таки Илиты
Ты слишком смел в суждениях для человека не написавшего и одной программы, и никогда не видевшего PB.

Rindex
13.01.2012, 14:36
Ты слишком смел в суждениях для человека не написавшего и одной программы, и никогда не видевшего PB.

Открою страшную тайну - он мне не нужен. А если ты не понял, то я предложил не изобретать велосипед, а уже воспользоваться тем, что есть, раз уж игра не для Спектрума. На этом всё, творите что хотите.

newart
13.01.2012, 14:49
На этом всё, творите что хотите.
Dizzy Age был бы прекрасен... будь он портирован на JS... тогда бы в игры играло пол Вконтакта...

---------- Post added at 15:49 ---------- Previous post was at 15:48 ----------

женя999, вот оконная версия:




UsePNGImageDecoder()

InitSprite()
InitKeyboard()

OpenWindow(0, 0,0, 388, 462, "Pure Dizzy", #PB_Window_SystemMenu |#PB_Window_ScreenCentered )
OpenWindowedScreen(WindowID(0), 0,0, 388, 462, 0, 0, 0)

LoadSprite(0, "dizzy1.PNG")
LoadSprite(1, "dizzy pic.PNG")
TransparentSpriteColor(0, #Red)

SetFrameRate(16)

Repeat

Repeat
Event = WindowEvent()

If Event = #PB_Event_CloseWindow: End: EndIf

Until Event = 0

ExamineKeyboard()
FlipBuffers()

ClearScreen(#Black)

DisplaySprite(1, 0, 0)

ClipSprite(0, 0+dizzy_frame*25,66,24,32)
DisplayTransparentSprite(0, 220, 328)

Delay(1)

anim + 1

If anim = 2

dizzy_frame ! 1
anim = 0

EndIf

ForEver

newart
13.01.2012, 14:53
У тебя неправильная картинка с Dizzy - не хватает маски (контура вокруг спрайта).

Я ее подработал чуток, дальше ты сам.

Rindex
13.01.2012, 14:55
Dizzy Age был бы прекрасен... будь он портирован на JS... тогда бы в игры играло пол Вконтакта...

Не я его делал. А в контакте онлайн в Диззи играть никто не будет. Эти игры не для этого сделаны. Хотя маленькие может и подошли бы...

женя999
13.01.2012, 14:56
Ну и выложи исходник, тогда по строкам скажу где какая ошибка.
Там много лишних переменных,не обращай внимание,
И Procedure dizzyupright() тоже так,временно.

женя999
13.01.2012, 15:04
вот оконная версия:
Да ,смотрится хорошо, я renegade в оконном делал на pb, но потом подумал что в развёрнутом виде будет лучше и спрайты увеличиваются сами. Графика нравится пиксельная, а самому увеличивать не охота, да и весить они будут больше.

newart
13.01.2012, 15:07
Там много лишних переменных,не обращай внимание,
И Procedure dizzyupright() тоже так,временно.
Жесть. :)
Рекомендую сразу и навсегда забыть про операторы Goto и Gosub.

---------- Post added at 16:07 ---------- Previous post was at 16:05 ----------


Графика нравится пиксельная, а самому увеличивать не охота, да и весить они будут больше.
Не будут. Увеличение делается 1-й командой - ResizeImage ...

Кстати у окна есть автоматический ресайз, но его беда в том что он ресайзит со сглаживанием. :(

jerri
13.01.2012, 15:16
у меня при компиляции пишет
openscreen or openwindowedscreen must be called before using sprite command

---------- Post added at 16:16 ---------- Previous post was at 16:12 ----------

newart, а чем плох gosub и что вместо него?

newart
13.01.2012, 15:24
newart, а чем плох gosub и что вместо него?
Вместо него процедуры.

Gosub и Goto ухудшает читаемость и отладку программы, те кто их используют обычно являются неопытными программистами, умудряются делать gosub без return, goto в тело процедур, переназначают важные переменные и делаю прочие несуразицы ведущие к непредсказуемым багам.

jerri
13.01.2012, 15:27
ну как бы всегда считал gosub:return удобным способом резать программу на части
а goto да, не более 1 на программу

newart
13.01.2012, 15:46
ну как бы всегда считал gosub:return
В больших программах Gosub = бардак.
А процедуры напротив дисциплинируют, ведь каждой из них ты расшариваешь только те переменные, что ей положено юзать.

---------- Post added at 16:46 ---------- Previous post was at 16:45 ----------

женя999, если буду вопросы по PB стучи в аську: 323595507

jerri
13.01.2012, 16:25
newart, а мою программку переделаешь под то как оно должно правильно выглядеть?

newart
13.01.2012, 16:33
newart, а мою программку переделаешь под то как оно должно правильно выглядеть?
Я тут в Самаре человека с дискетами нашел. Перегонишь? :)
Их немного и потому слать в питер, а потом обратно как то накладно...

thims
13.01.2012, 18:05
По просьбе newart, вот на XNA/VB (хотя я, лично, предпочитаю С#):

Module Program
Private Class MyGame
Inherits Game

Private graphics As GraphicsDeviceManager
Private batch As SpriteBatch
Private background As Texture2D
Private sprite As Texture2D
Private frame As Integer

Public Sub New()
graphics = New GraphicsDeviceManager(Me)
graphics.PreferredBackBufferWidth = 388
graphics.PreferredBackBufferHeight = 462

TargetElapsedTime = TimeSpan.FromMilliseconds(1000 / 16)
End Sub

Protected Overrides Sub LoadContent()
batch = New SpriteBatch(GraphicsDevice)
background = Texture2D.FromStream(GraphicsDevice, File.OpenRead("dizzy pic.png"))
sprite = Texture2D.FromStream(GraphicsDevice, File.OpenRead("dizzy1.png"))
End Sub

Protected Overrides Sub Update(gameTime As GameTime)
Dim state = Keyboard.GetState()

frame = frame Xor 1

MyBase.Update(gameTime)
End Sub

Protected Overrides Sub Draw(gameTime As GameTime)
GraphicsDevice.Clear(Color.Black)

batch.Begin()
batch.Draw(background, Vector2.Zero, Color.White)
batch.Draw(sprite, New Vector2(220, 238), New Rectangle(frame * 23, 74, 23, 20), Color.White)
batch.End()

MyBase.Draw(gameTime)
End Sub
End Class

Sub Main(ByVal args As String())
Using game As New MyGame()
game.Run()
End Using
End Sub
End Module

Но в смысле поддержки, расширяемости, удобства IDE, количества библиотек и размера комьюнити заруливает по полной. Никакие пуребасики и рядом не валялись.

женя999
13.01.2012, 18:07
стучи в аську
ок

newart
13.01.2012, 18:22
Но в смысле поддержки, расширяемости, удобства IDE, количества библиотек и размера комьюнити заруливает по полной.
Домыслы.

zx_demon
14.01.2012, 15:50
кому он его только непредлагал.

Эт точно! http://vrcp.ru/smiles/light/ap.gif

---------- Post added at 16:44 ---------- Previous post was at 16:39 ----------


Ооо, слышу слова прямо-таки Илиты, которая никак на баннер сверху крестик поставить не может, чтобы желающие могли его убрать.

Согласен, баннер нервирует.

---------- Post added at 16:50 ---------- Previous post was at 16:44 ----------

newart ты бы хоть учебник нормальный по PureBasic подкинул, а то я так нормальный и не нашёл.

женя999
16.01.2012, 08:46
newart ты бы хоть учебник нормальный по PureBasic подкинул, а то я так нормальный и не нашёл.
Да ,сам замучился,там конечно есть офигенная справка,но без помощи людей,я бы не сдвинулся. например

Color = Point(x, y)
вроде должно работать,но откуда я знал что надо так писать-
StartDrawing
Color = Point(x, y)
StopDrawing()

jerri
16.01.2012, 09:26
женя999, там же в примерах описано

женя999
16.01.2012, 11:25
Вот теперь диззи идёт вправо не скользя,через один пиксель,перерисовывал спрайты.
разрешение 640х480

Rindex
16.01.2012, 11:33
разрешение 640х480

Не увидел такого, просто растянут экран на весь монитор. И очень часто идя справа-налево происходит такое.
http://img196.imageshack.us/img196/388/47890476.png
Хотя вот нажав на принт скрин экран отобразился 640х480, а на мониторе был растянут на полную.

женя999
16.01.2012, 11:50
Я имею ввиду монитор переключается в режим 640х480 (просто у кого-то 320х240 не работала),а картика (игровое поле ) на верху растянуто в длинну. Но это не важно. Мне главное посмотрите движение вправо ,я спрайты изменил ,их теперь больше и диззи движется через 1 пиксель.
Скорость передвижения вправо как ?

jerri
16.01.2012, 11:55
вправо както не очень движется

Rindex
16.01.2012, 11:55
Я имею ввиду монитор переключается в режим 640х480

Нет, не переключается.
http://img402.imageshack.us/img402/7347/img2641gd.jpg


Скорость передвижения вправо как ?

До прыжка нормально, подпрыгнешь и опять скользить будешь.

женя999
16.01.2012, 12:10
Rindex, всё правильно так и должно показывать, игра не на весь экран,а в верху,просто разрешение поменялось 640х480. Я картинку просто вставил, для ориентира.
Вправо он идёт всегда одинаково,что до прыжка ,что после.

Rindex
16.01.2012, 12:14
Вправо он идёт всегда одинаково,что до прыжка ,что после.

Нет, вправо после прыжка быстрее идёт. Влево одинаково, правда частенько в белое пятно превращается.

---------- Post added at 13:14 ---------- Previous post was at 13:12 ----------


Rindex, всё правильно так и должно показывать, игра не на весь экран,а в верху,просто разрешение поменялось 640х480.

Это не 640х480. Загрузи любую Dizzy-AGE игру и увидешь, как должно быть.

женя999
16.01.2012, 12:38
Загрузи любую Dizzy-AGE игру и увидешь, как должно быть.
Я смотрю на спектрумскую. У меня уже глюки от всматривания,поэтому и прошу совета.
Может прыжёк медленный и после него кажется что диззи пошёл быстрее,я засекал секундомером,идёт одинаково.
белое пятно это потому что вправо спрайтов больше,а когда поворачиваем влево считываются № спрайтов правых и подставляются к левым,а левых то меньше и пока не обнулится... короче не доделал.
Шестая цифра на экране это номер спрайта.

Rindex
16.01.2012, 12:42
женя999, мне идеальным кажется прыжок и движения в Dizzy-AGE. Вот там действительно отлично всё подобрано. Ориентируйся на них.

женя999
16.01.2012, 12:51
Да,там всё идеально.
согласен.спасибо.

newart
16.01.2012, 12:56
newart ты бы хоть учебник нормальный по PureBasic подкинул, а то я так нормальный и не нашёл.
http://purebasic.ru

---------- Post added at 13:54 ---------- Previous post was at 13:52 ----------


я спрайты изменил ,их теперь больше и диззи движется через 1 пиксель.
Скорость передвижения вправо как ?
В дизика давно не играл, но влево выглядет естесвеннее.

---------- Post added at 13:56 ---------- Previous post was at 13:54 ----------


У меня уже глюки от всматривания,поэтому и прошу совета.
Делай как на спектруме. Частота обновления экрана 16 fps, движение по 4 пикселя.

GM BIT
07.08.2012, 10:42
Демосцена на pure basic

goblinish
07.08.2012, 15:27
Демосцена на pure basic

ой, надо же, -kvitaly- написал)
на PB грешат тем, что в dbfinteractive пишут ремейки cracktro.