Выбор разрешения экрана!
|
|
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 в разработке
| А вот сам архив
|
|
| |
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 в разработке
| Да не зачто, далее действует только фонтазия!!!
|
|
| |
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 в разработке
|
|
|
| |
Amadey | Дата: Среда, 20 Мая 2009, 20:38 | Сообщение # 15 |
Продвинутый
Группа: Участники
Сообщений: 127
Награды: 0
Замечания: 20%
Статус:
| maxturbo4229, извиняй конечно, так мельком глянул твой код из 4 поста. Ну и что тут сказать...наверное если подобное писалось в асме, тебя бы закопали (без обид) 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
|
|
| |