Пятница, 29 Ноября 2024, 11:12

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите в разборе программы.
Gamer6890Дата: Пятница, 13 Ноября 2015, 05:05 | Сообщение # 1
частый гость
Сейчас нет на сайте
Делал пример с книги по бейсику, нужно было сделать программу "Угадайка", где рандомно выбирается число, а пользователь должен его угадать, есть даже подсказки, "Правильное число больше, меньше" Вообщем в чем проблема, Списав с образца весь код изменив только названия переменных я запустил программу, но при угадывании числа должна выходить надпись, "Вы угадали число (число) с ... попытки" но всегда попыток ноль. Прошу помочь советом, как сделать что бы показывало количество потраченных попыток?

Вот образец, на английском правда..
Код
;demo02-11.bb - Try to guess the number
Print "Welcome to the Guessing Game!"
AppTitle "Guessing Game!"
;Seed the random generator...don't worry, it willl be explained later
SeedRnd MilliSecs()

;Pick a number between 1 and 100
numbertoguess = Rand(1,100)

;The num of guesses the user has used
numofguesses = 0

;set the beginning of loop label
.loopbegin
    ;Find out the user's guess
    guess = Input$("Guess a number ")

    ;If player guesses outside of range, tell him to guess again
    If guess > 100 Or guess < 1
  Print "Pick a number between 1 and 100, silly!"
  ;Go back to the beginning
  Goto loopbegin
  
    EndIf
    
    ;Add a guess to the guess counter
    numofguesses = numofguesses + 1  

    ;If the guess is too low, go back to beginning
    If guess < numbertoguess Then
  Print "The number was too low."
  Goto loopbegin
    ;If guess is too high, go back to the beginning
    Else If guess > numbertoguess Then
  Print "The number was too high."
  Goto loopbegin
    EndIf

Print "You guessed the number " + numbertoguess + " in " + numofguesses  + " tries!"

;Wait five seconds
Delay 5000


А вот мой код

Код
Print "Добро пожаловать в игру Угадайка"
AppTitle "Угадайка"
;Установка генератора случайных чисел..
SeedRnd MilliSecs()
;Выбор числа от 1 до 10
number=Rand(1,25)
;число попыток
numofguest=0
;устанавливаем метку начала цикла
.loopbegin
;выясняем какое число ввел пользователь.
guest=Input$("Ваше число")
;если игрок не угадал число, он угадывает снова
If guest > 25 Or guest < 1
Print "Попробуйте снова"
;возвращаемся в начало программы
Goto loopbegin

EndIf

;увеличиваем число использованных попыток игрока
numofguest = numofguest + 1
;если введенное число меньше загаданного переносим игрока в начало цикла
If guest < number Then
Print "Это число меньше загаданного"
Goto loopbegin
;если введенное число больше нужного
Else If guest > number Then
Print "Это число больше загаданного"
Goto loopbegin

EndIf

Print "Вы угадали число" + number + "вы молодец!" + "Вы угадали с" + numofguest + "попыток"

Delay 10000




Программирую в среде BlitzBasic
cannДата: Пятница, 13 Ноября 2015, 08:28 | Сообщение # 2
частый гость
Сейчас нет на сайте
Привет. Если не секрет, что за книга? В какой среде собирается проект?
Gamer6890Дата: Пятница, 13 Ноября 2015, 08:48 | Сообщение # 3
частый гость
Сейчас нет на сайте
Книга "Программирование игр" Маниш Сети. Изучаешь там бейсик и в конце книги у тебя получается игра типа Вольфейштейна. Пишу в среде Blitz3D, это можно сказать не среда а движок. Если хотите могу дать ссылку на книгу, хотя отсканенна она дерьмово..



Программирую в среде BlitzBasic
cannДата: Пятница, 13 Ноября 2015, 09:10 | Сообщение # 4
частый гость
Сейчас нет на сайте
Цитата Gamer6890 ()
Пишу в среде Blitz3D, это можно сказать не среда а движок.
Теперь ясно почему, компилятор free basic при сборки проекта выдает ошибки. Если можешь кинуть ссылку на книгу, то спасибо.
Gamer6890Дата: Пятница, 13 Ноября 2015, 09:46 | Сообщение # 5
частый гость
Сейчас нет на сайте
Книга "Программирование на Blitz3D"

Книга очень проста, только отсканирована хреново, но читать можно.




Программирую в среде BlitzBasic
GudleifrДата: Пятница, 13 Ноября 2015, 13:21 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Сначала, пардон, посмотрел не туда...
Проверьте-ка ограничения на длину имен переменных и меток.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Пятница, 13 Ноября 2015, 13:34
Gamer6890Дата: Пятница, 13 Ноября 2015, 20:47 | Сообщение # 7
частый гость
Сейчас нет на сайте
Цитата Gudleifr ()
Проверьте-ка ограничения на длину имен переменных и меток.

А как? Я просто только начал, сегодня еле переварил урок о Массивах..




Программирую в среде BlitzBasic
GudleifrДата: Пятница, 13 Ноября 2015, 21:27 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
Цитата Gamer6890 ()
А как?
В документации Вашего обезьянника - Blitz3D. Но можно проще - обрезать имена до пары-другой символов.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Пятница, 13 Ноября 2015, 21:28
Gamer6890Дата: Пятница, 13 Ноября 2015, 21:34 | Сообщение # 9
частый гость
Сейчас нет на сайте
Цитата Gudleifr ()
Но можно проще - обрезать имена до пары-другой символов.

Суть понял, спасибо, не знал раньше что есть ограничения на размер переменных..




Программирую в среде BlitzBasic
cannДата: Пятница, 13 Ноября 2015, 23:41 | Сообщение # 10
частый гость
Сейчас нет на сайте
По-моему синтаксис который используется в книги уже устарел, и в новых версиях среды blitzmax уже не работает. Поправил код, у меня он работает и выводит количество попыток.

Код
Print "Welcome to the Guessing Game!"
AppTitle = "Guessing Game!"

SeedRnd MilliSecs()

numbertoguess = Rand(1,100)

numofguesses = 0

#loopbegin

guess = Int(Input$("Guess a number "))

If guess > 100 Or guess < 1
    Print "Pick a number between 1 and 100, silly!"
    Goto loopbegin
EndIf
    
numofguesses = numofguesses + 1  

If guess < numbertoguess Then
    Print "The number was too low."
    Goto loopbegin
Else If guess > numbertoguess Then
    Print "The number was too high."
    Goto loopbegin
EndIf

Print "You guessed the number " + numbertoguess + " in " + numofguesses  + " tries!"

Delay 5000
Gamer6890Дата: Пятница, 13 Ноября 2015, 23:48 | Сообщение # 11
частый гость
Сейчас нет на сайте
cann, А я решил свою проблему немного по другому.
Код
Print "Добро пожаловать в игру Угадайка"
AppTitle "Угадайка"
;Установка генератора случайных чисел..
SeedRnd MilliSecs()
;Выбор числа от 1 до 10
number=Rand(1,25)
;число попыток
numofguest=0
;устанавливаем метку начала цикла
.loopbegin
;выясняем какое число ввел пользователь.
guest=Input$("Ваше число")
;если игрок не угадал число, он угадывает снова
If guest > 25 Or guest < 1
Print "Попробуйте снова"
;возвращаемся в начало программы
Goto loopbegin

EndIf

;увеличиваем число использованных попыток игрока
numofguest = numofguest + 1
;если введенное число меньше загаданного переносим игрока в начало цикла
If guest < number Then
Print "Это число меньше загаданного"
numofguest = numofguest + 1
Goto loopbegin
;если введенное число больше нужного
Else If guest > number Then
Print "Это число больше загаданного"
numofguest = numofguest + 1
Goto loopbegin

EndIf

Print "Вы угадали число" + number + "вы молодец!" + "Вы угадали с" + numofguest + "попыток"

Delay 10000

Добавлено (13 ноября 2015, 23:48)
---------------------------------------------

Цитата cann ()
По-моему синтаксис который используется в книги уже устарел, и в новых версиях среды blitzmax уже не работает

Я изучаю именно устаревший синтаксис, по тому что в новом, больше наворотов. А мне нужно выучить язык в краткие сроки, что бы доделать игру до нового года. Да и я не посегаю на грандиозные проекты, хочу делать игры с плохой графикой, типа тек которые были созданы в начале 21 века..




Программирую в среде BlitzBasic
cannДата: Пятница, 13 Ноября 2015, 23:56 | Сообщение # 12
частый гость
Сейчас нет на сайте
Хорошо, что работает, но по-моему у тебя количество попыток будет всегда больше действительного на 1 или я ошибаюсь?
Gamer6890Дата: Суббота, 14 Ноября 2015, 00:51 | Сообщение # 13
частый гость
Сейчас нет на сайте
cann, Спасибо за замечание, ты можешь аргументировать свои изменения в коде, так как не могу понять в чем разница кроме int.. Коментариями пометь свои коректировки в коде.



Программирую в среде BlitzBasic
cannДата: Суббота, 14 Ноября 2015, 01:37 | Сообщение # 14
частый гость
Сейчас нет на сайте
Алгоритм работы, авторской программы из книги, не изменился.

В строчке, где устанавливается заголовок программы, добавился знак равенства.
Было:
AppTitle "Guessing Game!"
Стало:
AppTitle = "Guessing Game!"

В строчке, где устанавливается метка перехода, знак точки изменился на знак решетки.
Было:
.loopbegin
Стало:
#loopbegin

В строчке, где пользователь вводит число, вводимое число преобразуется из строки в число.
Было:
guess = Input$("Guess a number ")
Стало:
guess = Int(Input$("Guess a number "))

А в остальном все как в книге.

Код с комментариями какие ты просил:

Код

Print "Welcome to the Guessing Game!"
'Строка установки заголовка программы, добавлен знак равно
AppTitle = "Guessing Game!"

SeedRnd MilliSecs()

numbertoguess = Rand(1,100)

numofguesses = 0
'Строка с меткой перехода, знак точки изменился на знак решетки
#loopbegin
'Строка ввода числа пользователя, вводимая строка пользователя преобразуется в число с помощью Int()
guess = Int(Input$("Guess a number "))

If guess > 100 Or guess < 1
    Print "Pick a number between 1 and 100, silly!"
    Goto loopbegin
EndIf
    
numofguesses = numofguesses + 1  

If guess < numbertoguess Then
    Print "The number was too low."
    Goto loopbegin
Else If guess > numbertoguess Then
    Print "The number was too high."
    Goto loopbegin
EndIf

Print "You guessed the number " + numbertoguess + " in " + numofguesses  + " tries!"

Delay 5000
Gamer6890Дата: Суббота, 14 Ноября 2015, 01:42 | Сообщение # 15
частый гость
Сейчас нет на сайте
cann, Спасибо большое, компилятор только не кушает #loopbegin так что я изменил решетку на точку, но всё работает, хотя я написал практически точную копию.. спасибо за советы... Буду учить массивы....



Программирую в среде BlitzBasic
cannДата: Суббота, 14 Ноября 2015, 01:48 | Сообщение # 16
частый гость
Сейчас нет на сайте
Я установил BlitzMax версии 1.50. У тебя какая версия? Может в этом дело, что #loopbegin не понимает.
Gamer6890Дата: Суббота, 14 Ноября 2015, 01:55 | Сообщение # 17
частый гость
Сейчас нет на сайте
cann, У меня не BlitzMax, а среда BlitzBasic. А скорее это не среда а игровой движок. Та книга которую я скидывал в комментариях, именно для разработки на этом движке. Вот ИНФА о движке в википедии.



Программирую в среде BlitzBasic
cannДата: Суббота, 14 Ноября 2015, 01:59 | Сообщение # 18
частый гость
Сейчас нет на сайте
Почитаю, спасибо.
Gamer6890Дата: Суббота, 14 Ноября 2015, 02:05 | Сообщение # 19
частый гость
Сейчас нет на сайте
Цитата cann ()
Почитаю, спасибо

Пожалуйста..

Я начал изучать именно работу на этом двиге по тому что по моему он очень прост, и функционален. Во всех уроках которые я читал, в конце, любой разработчик с прямыми руками может создать вполне играбельный 3д шутер а ля Wolfeishtein. А я задумал создать хоррор от первого лица, с примесью жанра квест.




Программирую в среде BlitzBasic
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг