[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Выбор разрешения экрана!
UnodeyaДата: Вторник, 19 Мая 2009, 09:25 | Сообщение # 1
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Помогите пожалуйста нужно чтобы в меня был выбор разрешения экрана, делаю с использованием кейсов т.е case 1 меню case 2 игра. Как сделать так чтобы изменения разрешения в case 1 влияли на case 2, нужно чтобы в меню было несколько вариантов изменения разрешения. Заранее большое спасибо. Если сложно будет описать. Можно примерчеком)



 
maxturboДата: Вторник, 19 Мая 2009, 21:22 | Сообщение # 2
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Для начало создай файл в который будеуд сохроняться разрешения экрана допустим graphics.cfg
 
UnodeyaДата: Вторник, 19 Мая 2009, 21:47 | Сообщение # 3
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Создал) Что дальше?)



 
maxturboДата: Вторник, 19 Мая 2009, 22:01 | Сообщение # 4
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Вот небольшой код, graphics.cfg это файл куда сохроняются настройки экрано конечно можно и лучше сделать но я для примера написал такой чтоб хоть понятно было, а дальше все зависит от фонтазии
Code

Include "graphics.cfg"
Graphics3D w,h,b,s
SetBuffer BackBuffer()
fon=LoadFont("Arial",24)
Repeat
If MouseHit(1)
Select main_1
Case 1
Mode_1()
Case 2
Mode_2()
Case 3
Mode_3()
End Select  
EndIf
Cls
main_1=0
If RectsOverlap(MouseX(),MouseY(),1,1,50,50,80,20) main_1=1
If RectsOverlap(MouseX(),MouseY(),1,1,50,70,80,20) main_1=2
If RectsOverlap(MouseX(),MouseY(),1,1,50,90,80,20) main_1=3

RenderWorld
UpdateWorld
SetFont fon

If main_1=1
Color 0,0,255
Text 50,50,"640,480"
Text 20,240,"Изменения вступят всилу после перезагрузки"
Else
Color 255,0,0
Text 50,50,"640,480"
EndIf
If main_1=2
Color 0,0,255
Text 50,70,"800,600"
Text 20,240,"Изменения вступят всилу после перезагрузки"
Else
Color 255,0,0
Text 50,70,"800,600"
EndIf
If main_1=3
Color 0,0,255
Text 50,90,"1024,768"
Text 20,240,"Изменения вступят всилу после перезагрузки"
Else
Color 255,0,0
Text 50,90,"1024,768"
EndIf
Flip
Until KeyHit(1)
End
Function Mode_1()
filein=WriteFile("graphics.cfg")
WriteLine filein,"w=640"
WriteLine filein,"h=480"
WriteLine filein,"b=32"
WriteLine filein,"s=2"
End Function

Function Mode_2()
filein=WriteFile("graphics.cfg")
WriteLine filein,"w=800"
WriteLine filein,"h=600"
WriteLine filein,"b=32"
WriteLine filein,"s=2"
End Function

Function Mode_3()
filein=WriteFile("graphics.cfg")
WriteLine filein,"w=1024"
WriteLine filein,"h=768"
WriteLine filein,"b=32"
WriteLine filein,"s=2"
End Function
 
maxturboДата: Вторник, 19 Мая 2009, 22:02 | Сообщение # 5
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
А вот сам архив
Прикрепления: 0838289.rar (0.7 Kb)
 
maxturboДата: Вторник, 19 Мая 2009, 22:02 | Сообщение # 6
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Ну как теперь понятно?
 
UnodeyaДата: Вторник, 19 Мая 2009, 22:15 | Сообщение # 7
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Спасибо вам огромное!! Респект!)



 
maxturboДата: Вторник, 19 Мая 2009, 22:18 | Сообщение # 8
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Да не зачто, далее действует только фонтазия!!! good
 
UnodeyaДата: Вторник, 19 Мая 2009, 22:31 | Сообщение # 9
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Я заметил что изменяется именно тот экран где выбор разрешения. Понимаете я начинающий, мне интересно как сделать чтобы эти изменения отразились на основое тело игры. Чтобы зайти в это меню выбрать разрешение, а затем зайти в игру уже с выбраным разрешением. Если не задтруднит не могли бы Вы подсказать!



 
maxturboДата: Вторник, 19 Мая 2009, 22:47 | Сообщение # 10
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Используй для игры тот же файл с настройками экрана и все!
 
UnodeyaДата: Вторник, 19 Мая 2009, 22:49 | Сообщение # 11
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Мне нужно реализовать изменение разрешения во время игрового процесса, может чтобы долго не писать вы дадите ссычку на исходники какой нибудь игры где это реализованно? Или что то типо того.



 
UnodeyaДата: Вторник, 19 Мая 2009, 23:07 | Сообщение # 12
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Спасибо вам!)



 
maxturboДата: Вторник, 19 Мая 2009, 23:10 | Сообщение # 13
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Лови может что поймешь, запускай файл не GameMenu.bb а Game.bb впринцепи тоже самое только разрешение менюшки не меняеца а самой игры, заходишь в настройки ставишь разрешение которое тебе надо сохроняешь нажимаешь NewGame и готово, объясню принцип, файл меню и игры в разных кодах когда ты меняешь настройки игры все изменения сохроняються в файл game.cfg при нажатие на NewGame игра начинает считывать пораметры с файла game.cfg, в принцепи все!
 
maxturboДата: Среда, 20 Мая 2009, 02:12 | Сообщение # 14
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
smile
Прикрепления: GameMenu.part1.rar (1.39 Mb) · GameMenu.part2.rar (807.0 Kb)
 
AmadeyДата: Среда, 20 Мая 2009, 20:38 | Сообщение # 15
Продвинутый
Группа: Участники
Сообщений: 127
Награды: 0
Замечания: 20%
Статус:
maxturbo4229, извиняй конечно, так мельком глянул твой код из 4 поста. Ну и что тут сказать...наверное если подобное писалось в асме, тебя бы закопали biggrin (без обид)

1. Что для каждого разрешения обязательна фраза - "Изменения вступят в силу после перезагрузки" ???? Сколько лишних байт!!!
Ответ:
Лучше создать функцию, создания того же, но автоматически:
file = OpenFile ("graphics.cfg")
While Not EOF (file)
CreateButton (10,a=a+10,ReadLine(file))
Wend

; Тут рисуем программно или грузим кнопку
Global img = LoadImage ("button.PNG")

Function CreateButton (X,Y,MsgText$)
DrawImage img,X,Y
Text X,Y,MsgText
End Function

Function UpdateButton ()
Обработка на коллизию координат мыши с картинкой нашей кнопки
End Function

Потом в цикле
UpdateButton ()

Всё !!!

Насколько грамотнее и легче в понимании !!!

Надеюсь помог.
До встречи.

Сообщение отредактировал Amadey - Среда, 20 Мая 2009, 20:42
 
UnodeyaДата: Четверг, 21 Мая 2009, 19:07 | Сообщение # 16
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Amadey
Спасибо вам большое!




 
maxturboДата: Пятница, 22 Мая 2009, 15:53 | Сообщение # 17
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Amadey, Ну вообщето я просто накидал пример создания выбора разрешения экрана, конечно такое в игре использовать не будешь но суть создания понять можно!!!
 
maxturboДата: Вторник, 26 Мая 2009, 19:51 | Сообщение # 18
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Вот еще код для смены разрешения экрана
Code

Graphics 640,480,32,2
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
 
  • Страница 1 из 1
  • 1
Поиск: