Цветомир обнови решението на 26.04.2015 21:37 (преди над 9 години)
+#Проекта ще представлява 2D конзолна игра, в която ще има герои, #врагове, оръжия, магии и съкровища. Всеки герой и враг ще може #да има оръжие и магии, може да бъде си възстановява живота и #маната по 2 начина: магия и при придвижване. Играта ще има 2 #нива, като за да може едно ниво да бъде завършено героя трябва #да стигне до определена точка.Картата ще представлява нещо като:
+#
+# S.##.....T
+# #T##..###.
+# #.###E###E
+# #.E...###.
+# ###T#####G
+#
+#където:
+# S - мястото на което може да бъде призован героя ни
+# G - мястото до което трябва се стигне
+# # - непроходима част
+# . - проходима част
+# T - съкровище, което е на рандом принцип
+# E - враговете, които трябва да убием
+#
+#Картата ще се съхранява в текстов файл.
+#
+#Работеща програма изглежда нещо като това:
+#>>> h = Hero(name="Bron", title="Dragonslayer", health=100, #mana=100, mana_regeneration_rate=2)
+#>>> w = Weapon(name="The Axe of Destiny", damage=20)
+#>>> h.equip(w)
+#>>> s = Spell(name="Fireball", damage=30, mana_cost=50, #cast_range=2)
+#>>> h.learn(s)
+#>>> map = Dungeon("level1.txt")
+#>>> map.spawn(h)
+#>>> map.print_map()
+# #H.##.....T
+# #T##..###.
+# #.###E###E
+# #.E...###.
+# ###T#####G
+# >>> map.move_hero("right")
+# True
+# >>> map.move_hero("down")
+# Found health potion. Hero health is max.
+# >>> map.print_map()
+# # ..##.....T
+# #H##..###.
+# #.###E###E
+# #.E...###.
+# ###T#####G
+# >>> map.hero_attack(by="spell")
+# Nothing in casting range 2
+# >>> map.move_hero("down")
+# >>> map.move_hero("down")
+# >>> map.print_map()
+# ..##.....T
+# #.##..###.
+# #.###E###E
+# #HE...###.
+# ###T#####G
+# >>> map.hero_attack(by="spell")
+# A fight is started between our Hero(health=100, mana=100) and # Enemey(health=100, mana=100, damage=20)
+# Hero casts a Fireball, hits enemy for 20 dmg. Enemy health is # 80
+# Enemy moves one square to the left in order to get to the # hero. This is his move.
+# Hero casts a Fireball, hits enemy for 20 dmg. Enemy health is # 60
+# Enemy hits hero for 20 dmg. Hero health is 80
+# Hero does not have mana for another Fireball.
+# Hero hits with Axe for 20 dmg. Enemy health is 40
+# Enemy hits hero for 20 dmg. Hero health is 60.
+# Hero hits with Axe for 20 dmg. Enemy health is 20
+# Enemy hits hero for 20 dmg. Hero health is 40.
+# Hero hits with Axe for 20 dmg. Emely health is 0
+# Enemy is dead!
Супер, само че това е дървен начин за ползване. Ок е да няма GUI, но си поиграй за по-ползваем command line интерфейс. Приемане на прости текстовеи команди като "move right", "move left", "attack" и прочее, които да parse-ваш и обработваш по някакъв начин. Така си гарантираш едно ниво на абстракция между играча и кода отговорен за логиката на играта. Ако ти остане време все пак е препоръчително да се опиташ да сглобиш нещо с Qt например.