PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Игра Больше - Меньше


Игра Больше - Меньше

Сообщений 1 страница 9 из 9

1

Вот занялся простейшей игрой Больше - Меньше, но она оказалось не такой легкой как я думал. Цель игры: угадать какое число будет следующим: Большим, Меньшим или же Равно (Такое же).  Числа появляются в случайном порядке. Мой вопрос: Как при показе числа создать условие проверки, при котором можно было бы узнать Больше число, меньше или же равно? Рассматривается случай самого первого уровня. Вот код:

Код:
Enumeration
  #Window_0
EndEnumeration

Enumeration
  #MenuBar_0
EndEnumeration

Enumeration
  #MENU_10
  #MENU_11
  #MENU_12
  #MENU_13
  #MENU_14
  #MENU_15
  #MENU_2
  #MENU_4
  #MENU_6
  #MENU_7
  #MENU_9
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_0
  #Button_Menshe
  #Button_Ravno
  #Button_Bolshe
  #Text_Result
  #Text_Hod
  #Text_NumbHod
  #Text_Rek
  #Text_NumbRek
EndEnumeration

;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Times New Roman", 20, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(2, "Times New Roman", 26)
Global FontID3
FontID3 = LoadFont(3, "Comic Sans MS", 26)
Global FontID4
FontID4 = LoadFont(4, "Comic Sans MS", 28)
Global FontID5
FontID5 = LoadFont(5, "Comic Sans MS", 36)
Global FontID6
FontID6 = LoadFont(6, "Comic Sans MS", 30)
Global FontID7
FontID7 = LoadFont(7, "Arial", 14, #PB_Font_Bold)
Global FontID8
FontID8 = LoadFont(8, "Arial", 12)
Global FontID9
FontID9 = LoadFont(9, "Arial", 11)
Global FontID10
FontID10 = LoadFont(10, "Arial", 11, #PB_Font_Bold)

Procedure qq()
    chislo.s=Str(Random(2))
    SetGadgetText(#Text_Result,chislo)
EndProcedure

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 381, 266, 271, 139, "Больше-Меньше",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateMenu(#MenuBar_0, WindowID(#Window_0))
      MenuTitle("Файл")
      OpenSubMenu("Новая игра")
      MenuItem(#MENU_10, "3 числа")
      MenuItem(#MENU_11, "10 чисел")
      MenuItem(#MENU_12, "50 чисел")
      MenuItem(#MENU_13, "100 чисел")
      MenuItem(#MENU_14, "1000 чисел")
      CloseSubMenu()
      MenuBar()
      MenuItem(#MENU_2, "Выход")
      MenuTitle("Помощь")
      MenuItem(#MENU_6, "Справка")
      MenuBar()
      MenuItem(#MENU_7, "О программе")
      EndIf

      If CreateGadgetList(WindowID(#Window_0))
        TextGadget(#Text_0, 5, 85, 60, 20, "Ваш ответ:")
        ButtonGadget(#Button_Menshe, 70, 80, 55, 25, "Меньше")
        ButtonGadget(#Button_Ravno, 130, 80, 55, 25, "Равно")
        ButtonGadget(#Button_Bolshe, 190, 80, 55, 25, "Больше")
        TextGadget(#Text_Result, 20, 10, 140, 60, "", #PB_Text_Center)
        SetGadgetFont(#Text_Result, FontID6)
        TextGadget(#Text_Hod, 180, 35, 25, 20, "Ход:")
        TextGadget(#Text_NumbHod, 205, 35, 30, 20, "", #PB_Text_Center)
        SetGadgetFont(#Text_NumbHod, FontID10)
        TextGadget(#Text_Rek, 180, 5, 45, 20, "Рекорд:")
        TextGadget(#Text_NumbRek, 220, 5, 30, 20, "", #PB_Text_Center)
        SetGadgetFont(#Text_NumbRek, FontID10)
        
      EndIf
    EndIf
EndProcedure

Open_Window_0()

Repeat

event=WaitWindowEvent()
menu=EventMenu()

If event=#PB_Event_Menu
 Select menu
  Case #MENU_10
    qq()
 EndSelect   
EndIf 

If event=#PB_Event_Gadget    
 If  EventGadget()=#Button_Bolshe
  qq()
 EndIf   
EndIf   

Until event=#PB_Event_CloseWindow

0

2

daiomik написал(а):

Как при показе числа создать условие проверки, при котором можно было бы узнать Больше число, меньше или же равно?

Код:
x=10
y=100

If x = y
 Debug "X = Y"
Else
  If x > y
     Debug "X больше чем Y"
  Else
     Debug "X меньше чем Y"
  EndIf
EndIf

0

3

Условия создал для кнопки больше, но не могу понять как записать прошлое значение (число), что бы сравнить его с уже появившемся при нажатии. Использовал chislo1.=chislo в процедуре. В итоге получается всегда равно:

Код:
Enumeration
  #Window_0
EndEnumeration

Enumeration
  #MenuBar_0
EndEnumeration

Enumeration
  #MENU_10
  #MENU_11
  #MENU_12
  #MENU_13
  #MENU_14
  #MENU_15
  #MENU_2
  #MENU_4
  #MENU_6
  #MENU_7
  #MENU_9
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_0
  #Button_Menshe
  #Button_Ravno
  #Button_Bolshe
  #Text_Result
  #Text_Hod
  #Text_NumbHod
  #Text_Rek
  #Text_NumbRek
EndEnumeration

;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Times New Roman", 20, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(2, "Times New Roman", 26)
Global FontID3
FontID3 = LoadFont(3, "Comic Sans MS", 26)
Global FontID4
FontID4 = LoadFont(4, "Comic Sans MS", 28)
Global FontID5
FontID5 = LoadFont(5, "Comic Sans MS", 36)
Global FontID6
FontID6 = LoadFont(6, "Comic Sans MS", 30)
Global FontID7
FontID7 = LoadFont(7, "Arial", 14, #PB_Font_Bold)
Global FontID8
FontID8 = LoadFont(8, "Arial", 12)
Global FontID9
FontID9 = LoadFont(9, "Arial", 11)
Global FontID10
FontID10 = LoadFont(10, "Arial", 11, #PB_Font_Bold)

Procedure qq()
    chislo.s=Str(Random(2))
    SetGadgetText(#Text_Result,chislo)
    chislo1.s=chislo
EndProcedure

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 381, 266, 271, 139, "Больше-Меньше",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateMenu(#MenuBar_0, WindowID(#Window_0))
      MenuTitle("Файл")
      OpenSubMenu("Новая игра")
      MenuItem(#MENU_10, "3 числа")
      MenuItem(#MENU_11, "10 чисел")
      MenuItem(#MENU_12, "50 чисел")
      MenuItem(#MENU_13, "100 чисел")
      MenuItem(#MENU_14, "1000 чисел")
      CloseSubMenu()
      MenuBar()
      MenuItem(#MENU_2, "Выход")
      MenuTitle("Помощь")
      MenuItem(#MENU_6, "Справка")
      MenuBar()
      MenuItem(#MENU_7, "О программе")
      EndIf

      If CreateGadgetList(WindowID(#Window_0))
        TextGadget(#Text_0, 5, 85, 60, 20, "Ваш ответ:")
        ButtonGadget(#Button_Menshe, 70, 80, 55, 25, "Меньше")
        ButtonGadget(#Button_Ravno, 130, 80, 55, 25, "Равно")
        ButtonGadget(#Button_Bolshe, 190, 80, 55, 25, "Больше")
        TextGadget(#Text_Result, 20, 10, 140, 60, "", #PB_Text_Center)
        SetGadgetFont(#Text_Result, FontID6)
        TextGadget(#Text_Hod, 180, 35, 25, 20, "Ход:")
        TextGadget(#Text_NumbHod, 205, 35, 30, 20, "", #PB_Text_Center)
        SetGadgetFont(#Text_NumbHod, FontID10)
        TextGadget(#Text_Rek, 180, 5, 45, 20, "Рекорд:")
        TextGadget(#Text_NumbRek, 220, 5, 30, 20, "", #PB_Text_Center)
        SetGadgetFont(#Text_NumbRek, FontID10)
        
      EndIf
    EndIf
EndProcedure

Open_Window_0()

Repeat

event=WaitWindowEvent()
menu=EventMenu()

If event=#PB_Event_Menu
 Select menu
  Case #MENU_10
    qq()
    
 EndSelect   
EndIf 

If event=#PB_Event_Gadget    
 If  EventGadget()=#Button_Bolshe
  qq()
    
  If chislo>chislo1
   Debug "Правильно"  
  ElseIf chislo<chislo1
   Debug "Меньше"
  ElseIf chislo=chislo1
   Debug "Равно"
  EndIf 
  
 EndIf   
EndIf   

Until event=#PB_Event_CloseWindow

Отредактировано daiomik (04.04.2010 19:36:10)

0

4

Код:
Enumeration
  #Window_0
EndEnumeration

Enumeration
  #MenuBar_0
EndEnumeration

Enumeration
  #MENU_10
  #MENU_11
  #MENU_12
  #MENU_13
  #MENU_14
  #MENU_15
  #MENU_2
  #MENU_4
  #MENU_6
  #MENU_7
  #MENU_9
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_0
  #Button_Menshe
  #Button_Ravno
  #Button_Bolshe
  #Text_Result
  #Text_Hod
  #Text_NumbHod
  #Text_Rek
  #Text_NumbRek
EndEnumeration

;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Times New Roman", 20, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(2, "Times New Roman", 26)
Global FontID3
FontID3 = LoadFont(3, "Comic Sans MS", 26)
Global FontID4
FontID4 = LoadFont(4, "Comic Sans MS", 28)
Global FontID5
FontID5 = LoadFont(5, "Comic Sans MS", 36)
Global FontID6
FontID6 = LoadFont(6, "Comic Sans MS", 30)
Global FontID7
FontID7 = LoadFont(7, "Arial", 14, #PB_Font_Bold)
Global FontID8
FontID8 = LoadFont(8, "Arial", 12)
Global FontID9
FontID9 = LoadFont(9, "Arial", 11)
Global FontID10
FontID10 = LoadFont(10, "Arial", 11, #PB_Font_Bold)

Procedure qq(n)
    chislo=Random(n)
    SetGadgetText(#Text_Result,Str(chislo))
  ProcedureReturn chislo
EndProcedure

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 381, 266, 271, 139, "Больше-Меньше",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateMenu(#MenuBar_0, WindowID(#Window_0))
      MenuTitle("Файл")
      OpenSubMenu("Новая игра")
      MenuItem(#MENU_10, "3 числа")
      MenuItem(#MENU_11, "10 чисел")
      MenuItem(#MENU_12, "50 чисел")
      MenuItem(#MENU_13, "100 чисел")
      MenuItem(#MENU_14, "1000 чисел")
      CloseSubMenu()
      MenuBar()
      MenuItem(#MENU_2, "Выход")
      MenuTitle("Помощь")
      MenuItem(#MENU_6, "Справка")
      MenuBar()
      MenuItem(#MENU_7, "О программе")
      EndIf

      If CreateGadgetList(WindowID(#Window_0))
        TextGadget(#Text_0, 5, 85, 60, 20, "Ваш ответ:")
        ButtonGadget(#Button_Menshe, 70, 80, 55, 25, "Меньше")
        ButtonGadget(#Button_Ravno, 130, 80, 55, 25, "Равно")
        ButtonGadget(#Button_Bolshe, 190, 80, 55, 25, "Больше")
        TextGadget(#Text_Result, 20, 10, 140, 60, "", #PB_Text_Center)
        SetGadgetFont(#Text_Result, FontID6)
        TextGadget(#Text_Hod, 180, 35, 25, 20, "Ход:")
        TextGadget(#Text_NumbHod, 205, 35, 30, 20, "", #PB_Text_Center)
        SetGadgetFont(#Text_NumbHod, FontID10)
        TextGadget(#Text_Rek, 180, 5, 45, 20, "Рекорд:")
        TextGadget(#Text_NumbRek, 220, 5, 30, 20, "", #PB_Text_Center)
        SetGadgetFont(#Text_NumbRek, FontID10)
        
      EndIf
    EndIf
EndProcedure

Open_Window_0()

Repeat

event=WaitWindowEvent()
menu=EventMenu()

If event=#PB_Event_Menu
 Select menu
  Case #MENU_10
    chislo=3
    Case #MENU_11
    chislo=10
      Case #MENU_12
    chislo=50
      Case #MENU_13
    chislo=100
      Case #MENU_14
    chislo=1000
 EndSelect   
EndIf 

If event=#PB_Event_Gadget    
 If  EventGadget()=#Button_Bolshe
    chislo1= qq(chislo)
    
  If chislo/2>chislo1
   Debug "Правильно"  
  ElseIf chislo/2<chislo1
   Debug "Не правильно, потому что меньше"
  ElseIf chislo/2=chislo1
   Debug "Не правильно, потому что равно"
  EndIf 
  
 EndIf   
EndIf   

Until event=#PB_Event_CloseWindow

Отредактировано haav (04.04.2010 20:38:22)

0

5

Что то я не понял нововведения процедуры:

Код:
Procedure qq(n)
    chislo=Random(n)
    SetGadgetText(#Text_Result,Str(chislo))
  ProcedureReturn chislo
EndProcedure

а именно  ProcedureReturn chislo  И зачем в скобках указано n  :blush:

0

6

Я не смогу в двух словах объяснить тебе так, чтобы ты понял на 100% 

А вот эта статья сможет:  http://pure-basic.narod.ru/docs/books/6.htm

0

7

В принципе добавь сюда подсчет ходов и рекорды, остальное хоть и наспех сделано, но вроде работает.

Код:
Enumeration
  #Window_0
EndEnumeration

Enumeration
  #MenuBar_0
EndEnumeration

Enumeration
  #MENU_10
  #MENU_11
  #MENU_12
  #MENU_13
  #MENU_14
  #MENU_15
  #MENU_2
  #MENU_4
  #MENU_6
  #MENU_7
  #MENU_9
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_0
  #Button_Menshe
  #Button_Ravno
  #Button_Bolshe
  #Text_Result
  #Text_Hod
  #Text_NumbHod
  #Text_Rek
  #Text_NumbRek
EndEnumeration

;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Times New Roman", 20, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(2, "Times New Roman", 26)
Global FontID3
FontID3 = LoadFont(3, "Comic Sans MS", 26)
Global FontID4
FontID4 = LoadFont(4, "Comic Sans MS", 28)
Global FontID5
FontID5 = LoadFont(5, "Comic Sans MS", 36)
Global FontID6
FontID6 = LoadFont(6, "Comic Sans MS", 30)
Global FontID7
FontID7 = LoadFont(7, "Arial", 14, #PB_Font_Bold)
Global FontID8
FontID8 = LoadFont(8, "Arial", 12)
Global FontID9
FontID9 = LoadFont(9, "Arial", 11)
Global FontID10
FontID10 = LoadFont(10, "Arial", 11, #PB_Font_Bold)

Procedure qq(n)
    chislo=Random(n)
    SetGadgetText(#Text_Result,Str(chislo))
  ProcedureReturn chislo
EndProcedure

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 381, 266, 271, 139, "Больше-Меньше",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateMenu(#MenuBar_0, WindowID(#Window_0))
      MenuTitle("Файл")
      OpenSubMenu("Новая игра")
      MenuItem(#MENU_10, "3 числа")
      MenuItem(#MENU_11, "10 чисел")
      MenuItem(#MENU_12, "50 чисел")
      MenuItem(#MENU_13, "100 чисел")
      MenuItem(#MENU_14, "1000 чисел")
      CloseSubMenu()
      MenuBar()
      MenuItem(#MENU_2, "Выход")
      MenuTitle("Помощь")
      MenuItem(#MENU_6, "Справка")
      MenuBar()
      MenuItem(#MENU_7, "О программе")
      EndIf

      If CreateGadgetList(WindowID(#Window_0))
        TextGadget(#Text_0, 5, 85, 60, 20, "Ваш ответ:")
        ButtonGadget(#Button_Menshe, 70, 80, 55, 25, "Меньше")
        ButtonGadget(#Button_Ravno, 130, 80, 55, 25, "Равно")
        ButtonGadget(#Button_Bolshe, 190, 80, 55, 25, "Больше")
        TextGadget(#Text_Result, 20, 10, 140, 60, "", #PB_Text_Center)
        SetGadgetFont(#Text_Result, FontID6)
        TextGadget(#Text_Hod, 180, 35, 25, 20, "Ход:")
        TextGadget(#Text_NumbHod, 205, 35, 30, 20, "", #PB_Text_Center)
        SetGadgetFont(#Text_NumbHod, FontID10)
        TextGadget(#Text_Rek, 180, 5, 45, 20, "Рекорд:")
        TextGadget(#Text_NumbRek, 220, 5, 30, 20, "", #PB_Text_Center)
        SetGadgetFont(#Text_NumbRek, FontID10)
        
      EndIf
    EndIf
EndProcedure

Open_Window_0()

Repeat

event=WaitWindowEvent()
menu=EventMenu()

If event=#PB_Event_Menu
 Select menu
  Case #MENU_10
    chislo=3
    Case #MENU_11
    chislo=10
      Case #MENU_12
    chislo=50
      Case #MENU_13
    chislo=100
      Case #MENU_14
    chislo=1000
 EndSelect   
EndIf 

; If event=#PB_Event_Gadget    
;  If  EventGadget()=#Button_Bolshe
;     chislo1= qq(chislo)
;     
;   If chislo/2>chislo1
;    Debug "Правильно"  
;   ElseIf chislo/2<chislo1
;    Debug "Не правильно, потому что меньше"
;   ElseIf chislo/2=chislo1
;    Debug "Не правильно, потому что равно"
;   EndIf 
;   
;  EndIf   
; EndIf   
If event=#PB_Event_Gadget 
Select EventGadget()
   Case #Button_Bolshe
     chislo1= qq(chislo)
       If chislo/2>chislo1
          Debug "Правильно"
       Else 
          Debug "Неправильно"  
       EndIf
    Case    #Button_Menshe
       chislo1= qq(chislo)
       If chislo/2>chislo1
          Debug "Неравильно"
       Else 
          Debug "Правильно"  
       EndIf
    Case   #Button_Ravno
        chislo1= qq(chislo)
       If chislo/2=chislo1
          Debug "Правильно"
       Else 
          Debug "Неправильно"  
       EndIf
    EndSelect   
endif
Until event=#PB_Event_CloseWindow

0

8

Прочитал я все про ProcedureReturn, понял вроде что она возвращает значения, но все равно не пойму как действует выше написанный код и зачем в ниже написанном коде происходит деление на 2?  :flag:

Код:
If chislo/2>chislo1
   Debug "Правильно"  
  ElseIf chislo/2<chislo1
   Debug "Не правильно, потому что меньше"
  ElseIf chislo/2=chislo1
   Debug "Не правильно, потому что равно"
  EndIf

0

9

daiomik написал(а):

Прочитал я все про ProcedureReturn, понял вроде что она возвращает значения, но все равно не пойму как действует выше написанный код и зачем в ниже написанном коде происходит деление на 2?

Если этого не делать то сравнение будет такое:

если  число>3  Число никогда не будет больше 3, поскольку в Random мы забиваем значение 3(максимальное) для первого пункта меню

если число<3

если число=3

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Игра Больше - Меньше