|
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,742
Написано 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,742
Написано 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,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Как сделать такую игру
Скорее всего игра потребляет слишком много оперативной памяти потому что ты каждый раз при обновлении блоков делаешь LoadImage.
Т.е. с каждым новым отрисованным кадром одни и те же изображения загружаются в память и "жрут" её.
Загрузи все картинки один раз вначале. Внутри UpdateCubes нужно только отрисовывать уже заранее загруженные.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:37.
|