Решение на Изберете си проект от Тачо Желев

Обратно към всички решения

Към профила на Тачо Желев

Код

"""
STAR WARS Episode 0 THE FORCE EMERGES
Описание:
Малко за самата играта. С няколко думи, събитията се развиват
по време на Старата република.
В играта, играчът ще има право да избира дали да започне като млад, но
обещаващ джедай или като жесток и безмилостен сит. Може свободно да приемем,
че The Light side и The Dark side си имат своите индивидуални предимства една
спрямо друга, което ще повлияе върху избора на играча в началото на играта.
Цел:
Целта на играта ще бъде играчът да достигне пълен синхрон със Силата, като
се превърне в един от най-могъщите джедаи/ситски лордове, живели някога.
(или просто атрибутът - force да достигне 100)
Това ще бъде достигнато с тестване на способностите на играча.
Реализация:
Директно към частта с програмирането. Идеята ми за имплементация все още звучи
доста елементарна, като ще се радвам много за други мнения. Играта сама по себе си
ще бъде един интересен Quiz, но тук няма да се тестват познанията на хората в Силата,
а способността им да мислят бързо, да изчисляват бързо и да вземат решения бързо,
което от своя страна ще влияе на по нататъшното им представяне в играта.
class Person:
def __init__(self, name):
self.__name = name
self._health = 100
self._intelligence = 0
self._agility = 0
self._force = 0
def get_health(self): ...
def get_intelligence(self): ...
def get_agility(self): ...
def get_force(self): ...
def set_health(self, health): ...
def set_intelligence(self, intelligence): ...
def set_agility(self, agility): ...
def set_force(self, force): ...
... други методи
class Jedi(Person):
def __init__(self, name):
self.__name = name
self.set_intelligence(...)
self.set_agility(...)
self.set_force(...)
... други методи
class Sith(Person):
def __init__(self, name):
self.__name = name
self.set_intelligence(...)
self.set_agility(...)
self.set_force(...)
... други методи
Това мисля, че би изглеждала примерна, груба имплементация на нашите герои.
Джедаят и Ситът ще се различават предимно по своите три атрибута (intelligence, agility, force).
В зависимост от тях, в МИНИ ИГРИТЕ, играчът ще има съответно предимство.
Там където пише други методи ще има функционалност, която ще е различна за Jedi/Sith по същата
причина. Например формула, по която се изчислява как дадения герой се представя в дадена битка
(изчислено в точки да кажем).
Самата игра:
class Game:
def __init__(self, player) - ще приема за аргумент играчът (Jedi/Sith)
self.player = player
if isinstance(player, Jedi):
print("Welcome, Jedi!")
else:
print("Welcome, Sith!")
def mini_game1(self): - Тук ще имаме за методи мини - игри
pass - Всяка ще е различна от останалите.
... - Всяка ще генерира рандом стойности при извикването си, като
def mini_game10(self): - така при всяко препятствие на героя, ще го чака различна игра,
pass - била тя различен метод, или някой който вече е викан но с различни стойности.
def example_game(self): - Примерна мини игра, в която за ограничено време, героят ще трябва да реши правилно уравнението.
numbers = (random.randint(1, 5), random.randint(1, 5), random.randint(1, 5))
answer = numbers[0]+numbers[1]*numbers[2]
print("You were ambushed, hurry, calculate, you have 5 seconds!")
print("-> ",numbers[0],"+",numbers[1],"*",numbers[2])
start = time.time()
choice = input("-> ")
end = time.time()
if end - start > 5 or answer != int(choice):
print("Too slow or incorrect answer")
-- тук викаме метод, с който намаляме даден атрибут на героя
else:
print("Correct")
-- тук викаме метод, с който награждаваме играча
-- и го препращаме към друг метод на класът Game, където
-- го чака друго препятствие
def game_status(self):
if self.player.get_force() >= 100:
print("win")
elif self.player.get_force() <= 0:
print("lose")
else:
print("still to play")
... други методи
ЦЕЛ (отново) - Когато атрибутът force на нашия играч достигне 100, като след всяко
успешно начинание, той може да се проверява и разбира се променя със set-ърите.
Кога губим ? - Когато force на нашия играч стане <=0
ОБОБЩЕНО:
Играта трябва да е напълно интерактивна. Всеки играч да прави сам избори на моменти,
като това може да го отведе към съвсем различни ситуации.
Разбирам, че със сигурност идеите ми са пълни с неточности, но като цяло това
е основната ми идея. Приемам всякакви критики, като най-вече се надявам на напътствия
за правене на играта по-трудна, по-добра или по-добро постигане на резултата за интерактивност.
"""

История (1 версия и 2 коментара)

Тачо обнови решението на 25.04.2015 18:22 (преди над 9 години)

+"""
+ STAR WARS Episode 0 THE FORCE EMERGES
+
+ Описание:
+ Малко за самата играта. С няколко думи, събитията се развиват
+ по време на Старата република.
+ В играта, играчът ще има право да избира дали да започне като млад, но
+ обещаващ джедай или като жесток и безмилостен сит. Може свободно да приемем,
+ че The Light side и The Dark side си имат своите индивидуални предимства една
+ спрямо друга, което ще повлияе върху избора на играча в началото на играта.
+
+ Цел:
+ Целта на играта ще бъде играчът да достигне пълен синхрон със Силата, като
+ се превърне в един от най-могъщите джедаи/ситски лордове, живели някога.
+ (или просто атрибутът - force да достигне 100)
+ Това ще бъде достигнато с тестване на способностите на играча.
+
+ Реализация:
+ Директно към частта с програмирането. Идеята ми за имплементация все още звучи
+ доста елементарна, като ще се радвам много за други мнения. Играта сама по себе си
+ ще бъде един интересен Quiz, но тук няма да се тестват познанията на хората в Силата,
+ а способността им да мислят бързо, да изчисляват бързо и да вземат решения бързо,
+ което от своя страна ще влияе на по нататъшното им представяне в играта.
+
+class Person:
+ def __init__(self, name):
+ self.__name = name
+ self._health = 100
+ self._intelligence = 0
+ self._agility = 0
+ self._force = 0
+ def get_health(self): ...
+ def get_intelligence(self): ...
+ def get_agility(self): ...
+ def get_force(self): ...
+
+ def set_health(self, health): ...
+ def set_intelligence(self, intelligence): ...
+ def set_agility(self, agility): ...
+ def set_force(self, force): ...
+ ... други методи
+
+class Jedi(Person):
+ def __init__(self, name):
+ self.__name = name
+ self.set_intelligence(...)
+ self.set_agility(...)
+ self.set_force(...)
+ ... други методи
+
+class Sith(Person):
+ def __init__(self, name):
+ self.__name = name
+ self.set_intelligence(...)
+ self.set_agility(...)
+ self.set_force(...)
+ ... други методи
+
+ Това мисля, че би изглеждала примерна, груба имплементация на нашите герои.
+ Джедаят и Ситът ще се различават предимно по своите три атрибута (intelligence, agility, force).
+ В зависимост от тях, в МИНИ ИГРИТЕ, играчът ще има съответно предимство.
+ Там където пише други методи ще има функционалност, която ще е различна за Jedi/Sith по същата
+ причина. Например формула, по която се изчислява как дадения герой се представя в дадена битка
+ (изчислено в точки да кажем).
+
+ Самата игра:
+
+class Game:
+ def __init__(self, player) - ще приема за аргумент играчът (Jedi/Sith)
+ self.player = player
+ if isinstance(player, Jedi):
+ print("Welcome, Jedi!")
+ else:
+ print("Welcome, Sith!")
+ def mini_game1(self): - Тук ще имаме за методи мини - игри
+ pass - Всяка ще е различна от останалите.
+ ... - Всяка ще генерира рандом стойности при извикването си, като
+ def mini_game10(self): - така при всяко препятствие на героя, ще го чака различна игра,
+ pass - била тя различен метод, или някой който вече е викан но с различни стойности.
+ def example_game(self): - Примерна мини игра, в която за ограничено време, героят ще трябва да реши правилно уравнението.
+ numbers = (random.randint(1, 5), random.randint(1, 5), random.randint(1, 5))
+ answer = numbers[0]+numbers[1]*numbers[2]
+
+ print("You were ambushed, hurry, calculate, you have 5 seconds!")
+ print("-> ",numbers[0],"+",numbers[1],"*",numbers[2])
+
+ start = time.time()
+ choice = input("-> ")
+ end = time.time()
+ if end - start > 5 or answer != int(choice):
+ print("Too slow or incorrect answer")
+ -- тук викаме метод, с който намаляме даден атрибут на героя
+ else:
+ print("Correct")
+ -- тук викаме метод, с който награждаваме играча
+ -- и го препращаме към друг метод на класът Game, където
+ -- го чака друго препятствие
+ def game_status(self):
+ if self.player.get_force() >= 100:
+ print("win")
+ elif self.player.get_force() <= 0:
+ print("lose")
+ else:
+ print("still to play")
+ ... други методи
+
+
+ЦЕЛ (отново) - Когато атрибутът force на нашия играч достигне 100, като след всяко
+успешно начинание, той може да се проверява и разбира се променя със set-ърите.
+Кога губим ? - Когато force на нашия играч стане <=0
+
+ОБОБЩЕНО:
+Играта трябва да е напълно интерактивна. Всеки играч да прави сам избори на моменти,
+като това може да го отведе към съвсем различни ситуации.
+Разбирам, че със сигурност идеите ми са пълни с неточности, но като цяло това
+е основната ми идея. Приемам всякакви критики, като най-вече се надявам на напътствия
+за правене на играта по-трудна, по-добра или по-добро постигане на резултата за интерактивност.
+"""

Целта ми е да придам интерактивност. Освен малкия пример за мини-игра, който съм дал, идеята ми е да има още примерно такива: - избор измежду няколко ситуации, като всяка води до различни последстивя за героя (да убиеш или пощадиш някого) - пресмятане на нещо за време (примерът; умн. на матрици; производна), като в зависимост от текущите стойности на атрибутите на Player имаш повече(по-малко) време или по-лесна(по-трудна) задача - логически въпроси с изброени отговори (открийте общото между две неща; по колко начина нещо може да се направи нещо; и т.н.) - базови въпроси с и без изброени отговори за време (коя е третата най-отдалечена планета от слънцето; ... и т.н.)

Все още не съм сигурен относно някои неща, но идеята ми е нещо такова. Не знам колко ясно стана, но съм отворен за предложения като например усложняване на мини-игрите или вкарване на някакъв друг сегмент в тях, който да ги прави по-интересни и по-предизвикателни.