Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 18.02.2018, 10:42   #1
Edmundosik
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 
1 To 9
        SeedRnd MilliSecs
()
        For 
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, 12:15   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,452
Написано 5,277 полезных сообщений
(для 15,248 пользователей)
Ответ: Как сделать такую игру

Сообщение от 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 
1 To 9
        SeedRnd MilliSecs
()
        For 
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, 12:31   #3
Edmundosik
AnyKey`щик
 
Регистрация: 18.02.2018
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Как сделать такую игру

Можете подсказать пожалуйста какая команда может двигать картинки?
(Offline)
 
Ответить с цитированием
Старый 18.02.2018, 13:04   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,452
Написано 5,277 полезных сообщений
(для 15,248 пользователей)
Ответ: Как сделать такую игру

В Блице такой команды нет.
(В Unity есть).
Чтобы подвинуть картинку тебе надо стереть всё с экрана и заново отрисовать всё игровое поле, расположив картинки в том порядке, в каком тебе нужно.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 18.02.2018, 13:05   #5
Edmundosik
AnyKey`щик
 
Регистрация: 18.02.2018
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Как сделать такую игру

Спасибо, буду знать.
(Offline)
 
Ответить с цитированием
Старый 18.02.2018, 16:58   #6
Edmundosik
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 1 To 9
        SeedRnd MilliSecs
()
        For 
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 в 19:39. Причина: Решил проблему
(Offline)
 
Ответить с цитированием
Старый 18.02.2018, 20:18   #7
Edmundosik
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 1 To 9
        SeedRnd MilliSecs
()
        For 
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 1 To 9
            
For 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, 20:36   #8
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,452
Написано 5,277 полезных сообщений
(для 15,248 пользователей)
Ответ: Как сделать такую игру

Скорее всего игра потребляет слишком много оперативной памяти потому что ты каждый раз при обновлении блоков делаешь LoadImage.

Т.е. с каждым новым отрисованным кадром одни и те же изображения загружаются в память и "жрут" её.

Загрузи все картинки один раз вначале. Внутри UpdateCubes нужно только отрисовывать уже заранее загруженные.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 07:08.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com