 |
2D-программирование Вопросы, касающиеся двумерного программирования |
18.02.2018, 13:42
|
#1
|
AnyKey`щик
Регистрация: 18.02.2018
Сообщений: 5
Написано 0 полезных сообщений (для 0 пользователей)
|
Как сделать такую игру
Возможно ли сделать игру похожую на Сокровище монтесумы?  Если возможно то как.
Смог сделать только игровую зону
Type block Field img End Type Graphics 800,600,32,2 SetBuffer BackBuffer() Global rcube DrawCubes() While Not (KeyHit(1)) Flip Wend End Function DrawCubes() For i = 1 To 9 SeedRnd MilliSecs() For a = 1 To 9 rcube = Rand(1,3) If rcube = 1 Then b.block = New block b\img = LoadImage("data\gfx\cube_1.jpg") EndIf If rcube = 2 Then b.block = New block b\img = LoadImage("data\gfx\cube_2.jpg") EndIf If rcube = 3 Then b.block = New block b\img = LoadImage("data\gfx\cube_3.jpg") EndIf DrawBlock b\img,a*60,i*60 Next Next End Function
P.S Я только начинающий в Blitz
|
(Offline)
|
|
18.02.2018, 15:15
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Как сделать такую игру
Сообщение от Edmundosik
Возможно ли сделать игру похожую на Сокровище монтесумы?  Если возможно то как.
Смог сделать только игровую зону
Type block Field img End Type Graphics 800,600,32,2 SetBuffer BackBuffer() Global rcube DrawCubes() While Not (KeyHit(1)) Flip Wend End Function DrawCubes() For i = 1 To 9 SeedRnd MilliSecs() For a = 1 To 9 rcube = Rand(1,3) If rcube = 1 Then b.block = New block b\img = LoadImage("data\gfx\cube_1.jpg") EndIf If rcube = 2 Then b.block = New block b\img = LoadImage("data\gfx\cube_2.jpg") EndIf If rcube = 3 Then b.block = New block b\img = LoadImage("data\gfx\cube_3.jpg") EndIf DrawBlock b\img,a*60,i*60 Next Next End Function
P.S Я только начинающий в Blitz
|
Возможно.
Ты же уже как-то написал создание игрового поля?
Продолжай теперь выполнять другие задачи.
Такие как "поменять блоки местами", например.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
18.02.2018, 15:31
|
#3
|
AnyKey`щик
Регистрация: 18.02.2018
Сообщений: 5
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как сделать такую игру
Можете подсказать пожалуйста какая команда может двигать картинки?
|
(Offline)
|
|
18.02.2018, 16:04
|
#4
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Как сделать такую игру
В Блице такой команды нет.
(В Unity есть).
Чтобы подвинуть картинку тебе надо стереть всё с экрана и заново отрисовать всё игровое поле, расположив картинки в том порядке, в каком тебе нужно.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
18.02.2018, 16:05
|
#5
|
AnyKey`щик
Регистрация: 18.02.2018
Сообщений: 5
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как сделать такую игру
Спасибо, буду знать.
|
(Offline)
|
|
18.02.2018, 19:58
|
#6
|
AnyKey`щик
Регистрация: 18.02.2018
Сообщений: 5
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как сделать такую игру
Когда я пытаюсь сохранить тип блока у меня выскакивает ошибка "Stream does not exist"
Вот код

Type block Field x,y Field img Field id Field isclick End Type Type savetmp Field idget Field idnum End Type Graphics 800,600,32,2 SetBuffer BackBuffer() Global rcube Global generate DrawCubes() While Not (KeyHit(1)) Flip Wend End Function DrawCubes() generate = 0 tmp.savetmp = New savetmp tmp\idnum = 0 tmp\idget = 0 For i = 1 To 9 SeedRnd MilliSecs() For a = 1 To 9 cubetmp = OpenFile("data\cubedata\cubetmp.dat") rcube = Rand(1,3) If rcube = 1 Then b.block = New block b\img = LoadImage("data\gfx\cube_1.jpg") tmp\idnum = tmp\idnum+1 tmp\idget = rcube WriteInt(cubetmp,tmp\idget) EndIf If rcube = 2 Then b.block = New block b\img = LoadImage("data\gfx\cube_2.jpg") tmp\idnum = tmp\idnum+1 tmp\idget = rcube WriteInt(cubetmp,tmp\idget) EndIf If rcube = 3 Then b.block = New block b\img = LoadImage("data\gfx\cube_3.jpg") tmp\idnum = tmp\idnum+1 tmp\idget = rcube WriteInt(cubetmp,tmp\idget) EndIf DrawBlock b\img,a*60,i*60 Next Next DebugLog "Cubes Generated" generate = 1 CloseFile sav End Function
Забыл заменить путь файла. 
Последний раз редактировалось Edmundosik, 18.02.2018 в 22:39.
Причина: Решил проблему
|
(Offline)
|
|
18.02.2018, 23:18
|
#7
|
AnyKey`щик
Регистрация: 18.02.2018
Сообщений: 5
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как сделать такую игру
Появилась другая проблема
Когда я запускаю игра начинает потреблять много оперативной памяти
вот код.

Type block Field x,y Field img Field id Field isclick End Type Type savetmp Field idget,idnum,file,id End Type If FileType("data\temp\cubetmp.dat") = 1 Then DeleteFile("data\temp\cubetmp.dat") ; Удаляем Temp-файл если он есть HidePointer Graphics 800,600,32,2 SetBuffer BackBuffer() Global rcube Global generate DrawCubes() While Not (KeyHit(1)) Rect MouseX(),MouseY(),16,16 ; Рисуем курсор UpdateCubes() Flip Cls ; Очищяем экран Wend DeleteFile("data\temp\cubetmp.dat") ; Удаляем Temp-файл End Function DrawCubes() ; Рисуем игровое поле generate = 0 tmp.savetmp = New savetmp tmp\idnum = 0 tmp\idget = 0 tmp\file = WriteFile("data\temp\cubetmp.dat") ; Создаём Temp-файл For i = 1 To 9 SeedRnd MilliSecs() For a = 1 To 9 rcube = Rand(1,3) If rcube = 1 Then b.block = New block b\img = LoadImage("data\gfx\cube_1.jpg") tmp\idnum = tmp\idnum+1 tmp\idget = rcube WriteInt(tmp\file,tmp\idget) EndIf If rcube = 2 Then b.block = New block b\img = LoadImage("data\gfx\cube_2.jpg") tmp\idnum = tmp\idnum+1 tmp\idget = rcube WriteInt(tmp\file,tmp\idget) EndIf If rcube = 3 Then b.block = New block b\img = LoadImage("data\gfx\cube_3.jpg") tmp\idnum = tmp\idnum+1 tmp\idget = rcube WriteInt(tmp\file,tmp\idget) EndIf DrawBlock b\img,a*60,i*60 Next Next generate = 1 If generate = 1 Then DebugLog "Cubes Generated" CloseFile tmp\file EndIf End Function ; Делаем игровое поле Function UpdateCubes() ; Обновляем игровое поле ltmp = ReadFile ("data\temp\cubetmp.dat") ; Читаем Temp-файл For i = 1 To 9 For a = 1 To 9 tmp.savetmp = New savetmp tmp\id = ReadInt(ltmp) ; Читаем переменую rcube из Temp-файла If tmp\id = 1 Then b.block = New block b\img = LoadImage("data\gfx\cube_1.jpg") EndIf If tmp\id = 2 Then b.block = New block b\img = LoadImage("data\gfx\cube_2.jpg") EndIf If tmp\id = 3 Then b.block = New block b\img = LoadImage("data\gfx\cube_3.jpg") EndIf DrawBlock b\img,a*60,i*60 Next Next CloseFile ltmp ; Закрываем Temp-файл End Function
|
(Offline)
|
|
18.02.2018, 23:36
|
#8
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Как сделать такую игру
Скорее всего игра потребляет слишком много оперативной памяти потому что ты каждый раз при обновлении блоков делаешь LoadImage.
Т.е. с каждым новым отрисованным кадром одни и те же изображения загружаются в память и "жрут" её.
Загрузи все картинки один раз вначале. Внутри UpdateCubes нужно только отрисовывать уже заранее загруженные.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:55.
|