Если вы играете в игрушки, то должны были видеть в её опциях настройка экрана (выбор разрешения и глубины цвета). Это обычная опция для каждой игрушки. Вот и мы с вами сделаем эту опцию для нашей игры.
Выбор режима происходит в цикле, но не главном. Я опишу вам функцию, чтобы вы могли её вставлять в свои программы.
Function SetGraphicsMode() ; Наша с вами функция Repeat ; Это начало цикла ;Это первый пункт меню. При наведении на него курсора пункт меняет цвет на красный (активный) If MouseX()>200 And MouseX()<350 And MouseY()>300 And MouseY()<320 Color 255,0,0 Text 200,300,"640 x 480 x 32" If MouseHit(1) Then mode=1 ; Если нажали на левую кнопку мыши, то в переменную mode ;сохраняем значение соответствующего номера пункта меню. Else Color 255,255,255 Text 200,300,"640 x 480 x 32" EndIf ;Второй пункт меню If MouseX()>200 And MouseX()<350 And MouseY()>320 And MouseY()<340 Color 255,0,0 Text 200,320,"800 x 600 x 32" If MouseHit(2) Then mode=2 Else Color 255,255,255 Text 200,320,"800 x 600 x 32" EndIf ;Третий пункт меню If MouseX()>200 And MouseX()<350 And MouseY()>340 And MouseY()<360 Color 255,0,0 Text 200,340,"1024 x 768 x 32" If MouseHit(3) Then mode=3 Else Color 255,255,255 Text 200,340,"1024 x 768 x 32" EndIf Flip Until mode>0 ; Выходим из цикла если выбрали хоть один пункт меню EndGraphics ; Завершаем изначальный графический режим см. первую строку полного примера программы. Ну а здесь инициализируем графический режим выбранный нами. If mode=1 Graphics3D 640,480,32,1 SetBuffer BackBuffer() ElseIf mode=2 Graphics3D 800,600,32,1 SetBuffer BackBuffer() ElseIf mode=3 Graphics3D 1024,768,32,1 SetBuffer BackBuffer() EndIf End Function
Вот и всё. Всё просто. Вы можете вставить в функцию свои режимы, как вам угодно. Функцию необходимо вызывать до главного цикла.
Пример:
Graphics 640,480 font=LoadFont("Blitz",14,True) SetFont font Global mode=0 SetGraphicsMode() camera=CreateCamera() cube=CreateCube() light=CreateLight() PositionEntity cube,0,0,5 While Not KeyDown(1) TurnEntity cube,1,0,1 RenderWorld UpdateWorld Flip Wend Function SetGraphicsMode() Repeat If MouseX()>200 And MouseX()<350 And MouseY()>300 And MouseY()<320 Color 255,0,0 Text 200,300,"640 x 480 x 32" If MouseHit(1) Then mode=1 Else Color 255,255,255 Text 200,300,"640 x 480 x 32" EndIf
If MouseX()>200 And MouseX()<350 And MouseY()>320 And MouseY()<340 Color 255,0,0 Text 200,320,"800 x 600 x 32" If MouseHit(2) Then mode=2 Else Color 255,255,255 Text 200,320,"800 x 600 x 32" EndIf
If MouseX()>200 And MouseX()<350 And MouseY()>340 And MouseY()<360 Color 255,0,0 Text 200,340,"1024 x 768 x 32" If MouseHit(3) Then mode=3 Else Color 255,255,255 Text 200,340,"1024 x 768 x 32" EndIf Flip Until mode>0 EndGraphics If mode=1 Graphics3D 640,480,32,1 SetBuffer BackBuffer() ElseIf mode=2 Graphics3D 800,600,32,1 SetBuffer BackBuffer() ElseIf mode=3 Graphics3D 1024,768,32,1 SetBuffer BackBuffer() EndIf End Function