Текстовые игры на бейсике - QBasic

Узнай цену своей работы

Формулировка задачи:

Подскажите, можно ли сделать что-то похожее на тиду или мир теней (или еще что-то от playtox)в среде бейсика? Заранее спасибо. Оффлайн, естественно

Решение задачи: «Текстовые игры на бейсике»

textual
Листинг программы
  1. DEFINT A-Z
  2. DECLARE SUB InitWorlds ()
  3. DECLARE SUB InitEnemys ()
  4. DECLARE SUB InitPlayer ()
  5. DECLARE SUB InitWeapon ()
  6. DECLARE FUNCTION CalcDamage% (EnemyN)  '  Вычисляем повреждения противнику
  7.  
  8.   CLS
  9.  
  10. ' Опишем структуры памяти
  11.  TYPE Weapon
  12.   WpName AS STRING * 15
  13.   Attack AS INTEGER              ' Атака оружия
  14.   Chance AS SINGLE               ' Шанс удачной атаки
  15.  END TYPE
  16.  
  17. '   Локация
  18.  TYPE World
  19.   Location AS STRING * 15        ' Имя локации
  20.   Enemys AS INTEGER              ' Кол-во врагов
  21.   EnemyOrientLevel AS INTEGER    ' Средний уровень врагов
  22.   EnemyGroup AS INTEGER          ' Макс кол-во врагов за раз
  23.  END TYPE
  24.  
  25. '   Игрок
  26.  TYPE Player
  27.   Nm AS STRING * 15              ' Имя
  28.   Lv AS INTEGER                  ' Уровень
  29.   Ex AS LONG                     ' Опыт
  30.   Health AS INTEGER              ' Здоровье
  31.   Mp AS INTEGER                  ' Магич. энергия(спецатаки)
  32.   Weapon AS INTEGER              ' Номер оружия
  33.  
  34.  END TYPE
  35.  
  36. '   Враг
  37.  TYPE Enemy
  38.   Nm AS STRING * 15
  39.   Hl AS INTEGER
  40.  END TYPE
  41.  
  42. ' Заведём память под структуры
  43.  DIM SHARED PL AS Player
  44.  DIM SHARED EN(50) AS Enemy, EnQuantity
  45.  DIM SHARED MAP(50) AS World, Locations, CurrentMp
  46.  DIM SHARED WPN(50) AS Weapon, Weapons
  47.  
  48.    '  "Технические" переменные
  49.  DIM SHARED Regim%             ' Режим игры:   0 - тихо   1 - бой
  50.  DIM SHARED TimeBeforeAttack   ' Время перед атакой
  51.  DIM SHARED GameTime           ' Общее время игры
  52.  
  53.  
  54.  
  55. ON TIMER(1) GOSUB Tmr
  56. TIMER ON
  57.  
  58. TimeBeforeAttack = RND * 15 + 20
  59.    InitWorlds
  60.    InitEnemys
  61.    InitPlayer
  62.    InitWeapon
  63.  
  64.  
  65.  
  66. Rdr = 1
  67. Vbr = 1
  68.  
  69.   DO
  70.     Kb$ = INKEY$
  71.     IF Kb$ = CHR$(27) THEN ExitGame = 1
  72.     IF Kb$ = CHR$(0) + CHR$(72) AND Vbr > 1 THEN Vbr = Vbr - 1: Rdr = 1
  73.     IF Kb$ = CHR$(0) + CHR$(80) AND Vbr < 4 THEN Vbr = Vbr + 1: Rdr = 1
  74.  
  75.  
  76.     IF Rdr = 1 THEN
  77.        Rdr = 0  ' Отрисовка сработала, выключаем
  78.      
  79.       LOCATE 3, 15: PRINT "MENU"
  80.      
  81.       IF Vbr = 1 THEN COLOR 15, 1 ELSE COLOR 7, 0
  82.       LOCATE 5, 10: PRINT "  Strike enemy"
  83.       IF Vbr = 2 THEN COLOR 15, 1 ELSE COLOR 7, 0
  84.       LOCATE 6, 10: PRINT "  Special attack"
  85.       IF Vbr = 3 THEN COLOR 15, 1 ELSE COLOR 7, 0
  86.       LOCATE 7, 10: PRINT "  Strike any"
  87.       IF Vbr = 4 THEN COLOR 15, 1 ELSE COLOR 7, 0
  88.       LOCATE 8, 10: PRINT "  Elixir"
  89.       LOCATE Vbr + 4, 10: COLOR 10, 1: PRINT CHR$(16)
  90.       COLOR 7, 0
  91.      
  92.       LOCATE 18: PRINT STRING$(80, 196)
  93.       LOCATE 18, 3: PRINT " " + RTRIM$(PL.Nm) + " "
  94.       LOCATE 19, 10: PRINT "Lv:"; : COLOR 10: PRINT PL.Lv; : COLOR 7
  95.       LOCATE , 30: PRINT "Exp:"; : COLOR 10: PRINT PL.Ex; : COLOR 7
  96.       LOCATE , 50: PRINT "Health:"; : COLOR 10: PRINT PL.Health; : COLOR 7
  97.       LOCATE 20, 10: PRINT "Location: ";
  98.       COLOR 10: PRINT MAP(CurrentMp).Location: COLOR 7
  99.       LOCATE 21, 10: PRINT "Before attack:"; TimeBeforeAttack; "seconds  "
  100.     END IF
  101.   LOOP UNTIL ExitGame
  102.  
  103. END
  104.  
  105. Tmr:
  106.  IF Regim% = 0 AND TimeBeforeAttack > 0 THEN
  107.    TimeBeforeAttack = TimeBeforeAttack - 1
  108.    Rdr = 1
  109.  END IF
  110. RETURN
  111.  
  112. FUNCTION CalcDamage% (EnemyN)
  113.  
  114.  
  115. END FUNCTION
  116.  
  117. SUB InitEnemys
  118.  
  119.  EnQuantity = 4
  120.  
  121.  EN(1).Nm = "Scorpion"
  122.  EN(1).Hl = 26
  123.  
  124.  EN(2).Nm = "Poison scum"
  125.  EN(2).Hl = 54
  126.  
  127.  EN(3).Nm = "Dark skeleton"
  128.  EN(3).Hl = 111
  129.  
  130.  EN(4).Nm = "Royal Guard"
  131.  EN(4).Hl = 238
  132.  
  133. END SUB
  134.  
  135. SUB InitPlayer
  136.   PL.Nm = "Player"
  137.   PL.Lv = 1
  138.   PL.Ex = 0
  139.   PL.Health = 100
  140. END SUB
  141.  
  142. SUB InitWeapon
  143.   Weapons = 5
  144.  
  145.   WPN(1).WpName = "Sword of hope"
  146.   WPN(1).Attack = 10     ' Атака 10
  147.   WPN(1).Chance = .5     ' Шанс 50 / 50
  148.  
  149.   WPN(2).WpName = "Slayer of gods"
  150.   WPN(2).Attack = 13     ' Атака 13
  151.   WPN(2).Chance = .6     ' Шанс 60%
  152.  
  153.   WPN(3).WpName = "Excalibur"
  154.   WPN(3).Attack = 21     ' Атака 21
  155.   WPN(3).Chance = .8     ' Шанс 80%
  156.  
  157.   WPN(4).WpName = "Great Axe"
  158.   WPN(4).Attack = 40     ' Атака 40
  159.   WPN(4).Chance = .7     ' Шанс 70%
  160.  
  161.   WPN(5).WpName = "Powerfull Blade"
  162.   WPN(5).Attack = 53     ' Атака 53
  163.   WPN(5).Chance = .88    ' Шанс 88%
  164.  
  165. END SUB
  166.  
  167. SUB InitWorlds
  168.  
  169.  
  170.   Locations = 5    ' Всего локаций
  171.   CurrentMp = 1    ' Тек. локация
  172.  
  173.   MAP(1).Location = "Orion"
  174.   MAP(1).Enemys = 36
  175.   MAP(1).EnemyOrientLevel = 1
  176.   MAP(1).EnemyGroup = 1
  177.  
  178.   MAP(2).Location = "Midgard"
  179.   MAP(2).Enemys = 120
  180.   MAP(2).EnemyOrientLevel = 4
  181.   MAP(2).EnemyGroup = 1
  182.  
  183.   MAP(3).Location = "Great Prison"
  184.   MAP(3).Enemys = 263
  185.   MAP(3).EnemyOrientLevel = 7
  186.   MAP(3).EnemyGroup = 2
  187.  
  188.   MAP(4).Location = "Underground Cementery"
  189.   MAP(4).Enemys = 378
  190.   MAP(4).EnemyOrientLevel = 6
  191.   MAP(4).EnemyGroup = 5
  192.  
  193.   MAP(5).Location = "HELL"
  194.   MAP(5).Enemys = 666
  195.   MAP(5).EnemyOrientLevel = 13
  196.   MAP(5).EnemyGroup = 10
  197.  
  198. END SUB

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.643 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы