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

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

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

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

Ответ
 
Опции темы
Старый 08.01.2007, 15:11   #1
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Select;case

Сделал меню и делаю саму игру. 2 экрана . Появилось необходимость сделать ещё несколько экранов: GAMOVER, INTRO, магазин и т.д.
Если добавитть case 3 то выдаёт глюк.
Как обойти. Где у меня ошибка?

;Инициализация графики
Graphics 800,600,32,2
 SetBuffer BackBuffer() 
; Создание нескольких екранов
Global game=1
Repeat 
Select game
Case 1

; ТЕЛО МЕНЮ

 Flip()
Until game=2;
;--------------------------
Case 2
: Тело игры 

Flip() 
Until game=1
;----------------------------
End Select 
Forever
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 15:27   #2
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Select;case

Два лишних Until. Каким боком они там могут работать? %)
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 15:46   #3
Nord
Знающий
 
Регистрация: 07.10.2006
Сообщений: 269
Написано 22 полезных сообщений
(для 30 пользователей)
Re: Select;case

Для начала поставь Repeat после каждого Case, а потом смотри. У меня всё работает. И перед "тело игры" у тебя двоеточие, в браузере набирал что-ли?
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 16:36   #4
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Select;case

В разделе справки Basic есть описание операторов Select и Repeat. Не мешало бы туда заглянуть.
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 20:51   #5
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Re: Select;case

Until Вы правы. Взря нарисовал. Но они там нужны т.к. там в каждом case repeat стоит. зыбыл убрать. Но вопрос то не в этом. Я пишу третюю case а он мне пишет типа что то там неправельно.. В справке дохлый пример.
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 21:26   #6
Nord
Знающий
 
Регистрация: 07.10.2006
Сообщений: 269
Написано 22 полезных сообщений
(для 30 пользователей)
Re: Select;case

Выложи код с тремя ветвями, а мы посмотрим чего там не так. Я добавлял, все работало.
(Offline)
 
Ответить с цитированием
Старый 08.01.2007, 21:26   #7
Raiter
Гигант индустрии
 
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений
(для 92 пользователей)
Re: Select;case

что конкретно пишет?
(Offline)
 
Ответить с цитированием
Старый 09.01.2007, 00:08   #8
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Re: Select;case

пишит: Ecstracting 'Case','Default' or 'End Selection'.
Код:
;Инициализация графики
Graphics 800,600,32,2
 SetBuffer BackBuffer() 
; Создание нескольких екранов
Global game=1
Repeat 
Select game
Case 1
;  А вот это меню.
Cls()
; Шрифт
font=LoadFont("Arial Cyr",30,1) 

;цикл
  Repeat
   Cls()

       If MouseDown(1) Then game=2   
;Текст 
   SetFont font:Color 0,170,255:Text 399,219,"НАжми на мыщ. Окно 1",1,1 

 Flip()
Until game=3;<-конец главного цикла
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Второе окно
Case 2
;  А вот это меню.
Cls()
; Шрифт
font=LoadFont("Arial Cyr",30,1) 

;цикл
 Repeat
    Cls()

      If MouseDown(1) Then game=2   
;Текст 
  SetFont font:Color 0,170,255:Text 399,219,"НАжми на мыщ. Окно 3",1,1 

 Flip()
Until game=2
-----------------------
; Окно самой игры
Case 2
;  А вот это меню.
Cls()
; Шрифт
font=LoadFont("Arial Cyr",30,1) 

;цикл
 Repeat
    Cls()

      If MouseDown(1) Then game=1  
;Текст 
  SetFont font:Color 0,170,255:Text 399,219,"НАжми на мыщ. Окно 2",1,1 

 Flip()
Until game=1
-----------------------
; Окно самой игры
Case 3
;  А вот это меню.
Cls()
; Шрифт
font=LoadFont("Arial Cyr",30,1) 

;цикл
 Repeat
    Cls()

      If MouseDown(1) Then game=2   
;Текст 
  SetFont font:Color 0,170,255:Text 399,219,"НАжми на мыщ. Окно 3",1,1 

 Flip()
Until game=2
-----------------------
End Select
(Offline)
 
Ответить с цитированием
Старый 09.01.2007, 01:36   #9
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Select;case

замороченно, причем по аццки.
вобщем, закоменть все ---------
и добавь в конец forever.
очень, очень мне не нравится етот метод.
(Offline)
 
Ответить с цитированием
Старый 09.01.2007, 01:54   #10
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Select;case

У тебя два раза Case 2. Структуру переделай, чтобы не все в куче было. Сделай вызов отдельных модулей через функции, например. Ошибка тут логическая, вызвана неразберихой в коде.
(Offline)
 
Ответить с цитированием
Старый 09.01.2007, 03:31   #11
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Re: Select;case

Да я сам уже путаю. Панаписал. Вообще у меня весь код в порядке, и откоментирован. Мне влом было его полностью выкладывать. поэтому напишу его заного с поправками
;Инициализация графики
Graphics 800,600,32,2
 SetBuffer BackBuffer() 
; Создание нескольких екранов
Global game=1
;цикл
Repeat 
Select game
Case 1
;  А вот это меню.
Cls()
; Шрифт
font=LoadFont("Arial Cyr",30,1) 
;цикл
  Repeat
   Cls()
; Если нажать на мыш, то case 2
       If MouseDown(1) Then game=2   
;Текст 
   SetFont font:Color 0,170,255:Text 399,219,"НАжми на мыщ. Окно 1",1,1 
Flip()
Until game=3;??????????
;---------------------------
; Окно самой игры
Case 2
;  А вот это меню.
Cls()
; Шрифт
font=LoadFont("Arial Cyr",30,1) 
;цикл
 Repeat
    Cls()
; Если нажать на мыш, то case 3
     If MouseDown(1) Then game=3  
;Текст 
  SetFont font:Color 0,170,255:Text 399,219,"НАжми на мыщ. Окно 2",1,1 

 Flip()
Until game=1;??????????
-----------------------
; Окно самой игры
Case 3
;  А вот это меню.
Cls()
; Шрифт
font=LoadFont("Arial Cyr",30,1) 

;цикл
 Repeat
    Cls()
;; Если нажать на мыш, то case 1
      If MouseDown(1) Then game=1  
;Текст 
  SetFont font:Color 0,170,255:Text 399,219,"НАжми на мыщ. Окно 3",1,1 

 Flip()
Until game=2;??????????
-----------------------
End Select 
Forever
А он всё равно работать не хочет.
(Offline)
 
Ответить с цитированием
Старый 09.01.2007, 03:40   #12
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Select;case

Никогда, не надо этого "Влом код выкладывать", никому не нужен он, в плохих целях, только для самообучения или что-бы помоч.
А если-же произойдёт случай в 1 из 999^999, то тот, кто сделал что-либо плохое, просто неудачник, и ничего хорошего у него из этого не выйдет. В этом есть 2 смысла относительно тому кто читает, задумайтесь.
(Offline)
 
Ответить с цитированием
Старый 09.01.2007, 03:45   #13
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Re: Select;case

весь код. Мучейся теперь, разберай. Говорю сразу case 3 там нету. не ищите. Напишите только как добавить, что изменить, и чтоб работало.
;=================================================
; Star Trash
; Космическая стрелялка. Дата начало работы 27.12.06
;=================================================
;Инициализация графики
Graphics 800,600,32,2
 SetBuffer BackBuffer() 
; Создание нескольких екранов
Global game=1
Repeat 
Select game
Case 1
;  А вот это меню.
Cls()
; Шрифт
font=LoadFont("Arial Cyr",30,1) 
Tex=LoadFont("Arial Cyr",20,1) 
dat=LoadFont("Arial Cyr",13,1) 
;Переменные
x=0
y=0
z=0
;Фон меню
img=LoadImage("data/menu/galaxi.jpg")
;звёзы
star=LoadImage("Data/menu/fon.png")
star2=LoadImage("Data/menu/fon2.png")
;Логотип
 Logo=LoadImage("data/menu/logo.png")
MaskImage  logo,0,0,0 ; Маска
;Музыка
sam=PlayMusic("data/sound/menu.mp3") ;загрузка музыки
;курсор
curs=LoadImage("data/menu/cursor.bmp");Загруска курсора
HidePointer; Курсор невидим 
;Загрузка кнопки
knop=LoadAnimImage("Data/menu/knop.png",175,40,0,2)
knop2=knop
knop3=knop
knop4=knop
; Загрузка диалогового окна
windialog=LoadImage("data/menu/windialog.png")
;цикл
  Repeat
   Cls()
     DrawImage(img, 0, 0);Позиция галактики
     TileImage star,0,qq:qq=qq- -3
     TileImage star2,0,hh:hh=hh- -1
     DrawImage(logo, 100,50);позиция логотипа
     DrawImage(knop, 310,200);позиция кнопки1
     DrawImage(knop2, 310,245);позиция кнопки2
     DrawImage(knop3, 310,290);позиция кнопки3
     DrawImage(knop4, 310,335);позиция кнопки4
     DrawImage(windialog, 100,385);позиция логотипа
; Если курсор  над кнопой Новая игра  и нажата мыш то запустить игру
   If MouseX()>310 And MouseY()>200 And MouseX()<485 And MouseY()<240
     DrawImage(knop, 310,200,1)
       If MouseDown(1) 
        z=1
       EndIf
   EndIf
If z=1 Then game=2   
;Если если курсор  над кнопой Помощь и нажата мыш то показать помощь и стереть другое
     If MouseX()>310 And MouseY()>245 And MouseX()<485 And MouseY()<285
       DrawImage(knop2, 310,245,1)
        If MouseDown(1) 
          x=1  
          y=0
        EndIf
      EndIf
    If x=1  SetFont tex Color 255,255,255:Text 160,410,"Помощь:",1,1    SetFont tex Color 255,255,255:Text 175,426,"w - Вперёд",1,1    SetFont tex Color 255,255,255:Text 167,442,"s - Назад",1,1    SetFont tex Color 255,255,255:Text 168,458,"a - Влево",1,1     SetFont tex Color 255,255,255:Text 172,474,"d - Вправо",1,1    SetFont tex Color 255,255,255:Text 225,490,"Кнопка мыши 1 - пушка",1,1    SetFont tex Color 255,255,255:Text 229,506,"Кнопка мыши 2 - ракеты",1,1   SetFont tex Color 255,255,255:Text 324,524,"Пробел - Вертикс. При наличии 100 минералов",1,1
    If x=0 Then SetFont tex Color 255,255,255:Text 160,410," ",1,1
; Если если курсор  над кнопой Авторы и нажата мыш то паказать авторов и стереть другое
     If MouseX()>310 And MouseY()>290 And MouseX()<485 And MouseY()<330
        DrawImage(knop3, 310,290,1)
         If MouseDown(1)
           x=0
           y=1 
         EndIf
     EndIf
   If y=1 Then  SetFont tex Color 255,255,255:Text 150,410,"Автор:",1,1    SetFont tex Color 255,255,255:Text 200,426,"Миха aka Atomikc",1,1    SetFont tex Color 255,255,255:Text 190,442,"[email protected]",1,1    SetFont tex Color 255,255,255:Text 268,458,"________________________________",1,1    SetFont tex Color 255,255,255:Text 380,484,"Отдельное спасибо Shad0w agent, за предоставление семплов",1,1    SetFont tex Color 255,255,255:Text 385,500,"А также сайту www.Boolean.name и всем тем, кто мне помогал...",1,1
   If y=0 Then SetFont tex Color 255,255,255:Text 160,410," ",1,1
;Если если курсор  над кнопой Выход и нажата мыш то выход
      If MouseX()>310 And MouseY()>335 And MouseX()<485 And MouseY()<375
        DrawImage(knop4, 310,335,1)
          If MouseDown(1) 
         :End
          EndIf
      EndIf
;Текст кнопок
   SetFont font:Color 0,170,255:Text 399,219,"Новая игра",1,1 
   SetFont font:Color 0,170,255:Text 399,264,"Помощь",1,1 
   SetFont font:Color 0,170,255:Text 399,309,"Авторы",1,1 
   SetFont font:Color 0,170,255:Text 399,354,"Выход",1,1 
;Текст версии игры
   SetFont dat Color 255,255,255:Text 615,560,"Star Trash.    Версия игры  0.1",1,1 
    DrawImage(curs, MouseX(), MouseY());Позиция Курсора
If game=1 Then StopChannel(sam2) ; стоп музыка
     If ChannelPlaying(sam)=0 Then sam=PlayMusic("data/sound/menu.mp3") ; Играть заного
 Flip()
Until game=2;<-конец главного цикла
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Окно самой игры
Case 2
;Переменные
a=0; Очки
b=0; ракеты
c=0; минералы
d=100; Жизнь
e=8; Point
;шрифт
font=LoadFont("Arial Cyr",40,1) 
Tex=LoadFont("Arial Cyr",15,1) 
;Check_point
point=LoadAnimImage("data/data/point/point.png",63,73,0,8)
;Vertix
vert=LoadAnimImage("data/data/point/vert.png",74,64,0,3)
x=0
;GUI
gal=LoadImage("data/menu/galaxi.jpg")
;Фон меню
img=LoadImage("data/data/GUI_2.png")
;звёзы
star=LoadImage("Data/menu/fon.png")
star2=LoadImage("Data/menu/fon2.png")
MaskImage  star,0,0,0 ; Маска
;Музыка
sam2=PlayMusic("data/sound/gama.mp3") ;загрузка музыки
;курсор
curs2=LoadImage("data/data/cur2.bmp");Загруска курсора
HidePointer; Курсор невидим 
MidHandle curs2; Посередине картинки
;Авианосец
avia=LoadImage("data/data/Avianosec_1.bmp");Загруска курсора
  ScaleImage avia, 0.7,0.7; Размеры
;цикл
Repeat
Cls()
  DrawImage(gal, 0, 0);Позиция галактики
  TileImage star,0,qq:qq=qq- -3
  TileImage star2,0,hh:hh=hh- -1
  DrawImage(avia, 300, 470);Авианосец
  DrawImage(img, 0, 0);Позиция GUI
;Chit
If KeyDown(78) Then a=a-10 b=b+1  c=c+10 If e<8 Then e=e+1
If KeyDown(74) Then a=a+10 b=b-1  c=c-10 If e>1 Then e=e-1

SetFont tex Color 255,255,255:Text 749,23,"Очки: "+a ,1,1 
SetFont tex Color 255,255,255:Text 127,574,b ,1,1 ;Ракеты
SetFont tex Color 255,255,255:Text 191,574,c ,1,1 ;минералы
DrawImage(vert, 44, 497,0)
;point
If e=8 Then   DrawImage(point, 20, 506,0);Позиция point1
If e=7 Then   DrawImage(point, 20, 506,1);Позиция point1
If e=6 Then   DrawImage(point, 20, 506,2);Позиция point1
If e=5 Then   DrawImage(point, 20, 506,3);Позиция point1
If e=4 Then   DrawImage(point, 20, 506,4);Позиция point1
If e=3 Then   DrawImage(point, 20, 506,5);Позиция point1
If e=2 Then   DrawImage(point, 20, 506,6);Позиция point1
If e=1 Then   DrawImage(point, 20, 506,7);Позиция point1
;Vertix
If c=0 Then x=0
   If c=0 Then DrawImage(vert, 44, 497,0) 
 If c>=100 And c<>0 Then x=1
   If x=1 Then DrawImage(vert, 44, 497,1);Позиция  Vertix
If c<100 And c<>0 Then x=2
   If x=2 Then DrawImage(vert, 44, 497,2);Позиция  Vertix

  DrawImage(curs2, MouseX(), MouseY());Позиция Курсора
If game=2 Then StopChannel(sam) ; стоп музыка
 If ChannelPlaying(sam2)=0 Then sam2=PlayMusic("data/sound/gama.mp3") ; Играть заного 
If  KeyDown(1) Then game=1
Flip() 
Until game=1
;----------------------------
End Select 
Forever
(Offline)
 
Ответить с цитированием
Старый 09.01.2007, 09:49   #14
Nord
Знающий
 
Регистрация: 07.10.2006
Сообщений: 269
Написано 22 полезных сообщений
(для 30 пользователей)
Re: Select;case

Atomikc
В 11 посте не все --------- закоментировал. Неужели так сложно поставить ; ? Так все работает, не понимаю твою проблему.
Graphics 800,600,32,2
SetBuffer BackBuffer() 
Global game=1

Repeat 
Select game
;-----------------------
Case 1
Cls()
font=LoadFont("Arial Cyr",30,1) 

  Repeat
    Cls()
    If MouseDown(1) Then game=2   
    SetFont font:Color 0,170,255:Text 399,219,"НАжми на мыщ. Окно 1",1,1 
    Flip()
  Until game=3
;-----------------------
Case 2
Cls()
font=LoadFont("Arial Cyr",30,1) 

  Repeat
    Cls()
    If MouseDown(1) Then game=3  
    SetFont font:Color 0,170,255:Text 399,219,"НАжми на мыщ. Окно 2",1,1 
     Flip()
  Until game=1
;-----------------------
Case 3
Cls()
font=LoadFont("Arial Cyr",30,1) 

  Repeat
    Cls()
    If MouseDown(1) Then game=1  
      SetFont font:Color 0,170,255:Text 399,219,"НАжми на мыщ. Окно 3",1,1 
     Flip()
  Until game=2
;-----------------------
End Select 
Forever
(Offline)
 
Ответить с цитированием
Старый 10.01.2007, 15:58   #15
Atomikc
Бывалый
 
Регистрация: 14.12.2006
Сообщений: 811
Написано 93 полезных сообщений
(для 257 пользователей)
Re: Select;case

Даже странно. а работает. Ничё не понимаю. Не работало раньше, и зароботало. Толи мир сашол сума толи я не выспался тогда. Наверно вётаки 2-е... А ----------------------- небыло раньше. Эт я потм в браузере добавил.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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