Показать сообщение отдельно
Старый 18.02.2018, 23: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 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)
 
Ответить с цитированием