Projekt i dodatki

Projekt i dodatki

Opis projektu

Projekt ma polegać na stworzeniu tekstowej gry konsolowej RPG (przykładem gry tekstowej, konsolowej RPG jest Otchłań). Gra musi zawierać następujące elementy:
* menu,
* pomoc,
* co najmniej 3 poziomy,
* na każdym z poziomów ma być co najmniej 5 lokacji po co najmniej 2-3 zadania (przykładowe lokacje: rynek, las itp., przykładowe zadania w lokacji: pójść do lasu pokonać potwora i uwolnić porwaną osobę, wygrać partię w kółko i krzyżyk lub inną grę z przeciwnikiem, który będzie komputerem itp.)
* gra ma umożliwiać stworzenie postaci, wylosowanie wartości cech, zapis stanu gry.

Strona techniczna.

W grze należy wykorzystać następujące elementy:
* struktury:
* listy,
* krotki,
* słowniki,
* zapis i odczyt z/do pliku,
* funkcje,
* pętle,
* obiekty i klasy,
* instrukcje warunkowe.

Projekty

Istnieje możliwość realizacji innego projektu, po wcześniejszym ustaleniu tematu i zakresu prac jakie zostaną wykonane.

Mapa i przemieszczanie


#coding=UTF8
import cmd , sys , textwrap

DESC = 'desc'
NORTH = 'north'
SOUTH = 'south'
EAST = 'east'
WEST = 'west'
UP = 'up'
DOWN = 'down'
GROUND = 'ground'
SHOP = 'shop'
GROUNDDESC = 'grounddesc'
SHORTDESC = 'shortdesc'
LONGDESC = 'longdesc'
TAKEABLE = 'takeable'
EDIBLE = 'edible'
DESCWORDS = 'descwords'
SCREEN_WIDTH = 80

location = 'Hall' # start w hollu
inventory = ['README Note', 'Miecz', 'Tarcza'] # start z podstawowym ekwipunkiem
showFullExits = True

worldRooms = {
"Hall" : {
"DESC": "Hall jest dużą otwartą przestrzenią w Centrum Sztuki Mościce. Wyjścia prowadzą we wszystkich kierunkach.",
"NORTH" : "Recepcja" ,
"EAST" : "Sala kinowa" ,
"SOUTH" : "Wyjście" ,
"WEST" : "Korytarz" ,
"GROUND" : [ 'Znak powitalny' , 'Recepcja', 'Fontanna' ]},
"Recepcja" : {
"DESC" : "Recepcja to mały pokoik,do którego dostęp mają tylko pracownicy z dużym oknem.",
"WEST" : "Sala Kinowa",
"EAST" : "Sale do ćwiczeń",
"SOUTH" : "Hall",
"GROUND" : [ 'Do Not Take Sign Sign' ]}
}
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
worldItems = {
"Znak powitalny" : {
"GROUNDDESC" : "Znak powitalny stoi tutaj" ,
"SHORTDESC" : "znak powitalny" ,
"LONGDESC" : "Znak powitalny brzmi:„ Witamy w tej wersji przygodowej gry tekstowej. Możesz wpisać „pomoc”, aby wyświetlić listę poleceń do użycia." ,
"TAKEABLE" : "Fałsz",
"DESCWORDS" : [ 'Witaj' , 'Znak' ]},
"Fontanna" : {
"GROUNDDESC" : "Kipiąca fontanna zielonej wody",
"SHORTDESC" : "fontanna" ,
"LONGDESC" : "Woda w fontannie ma jasny zielony kolor. Czy to ... gatorade?",
"TAKEABLE" : "Fałsz" ,
"DESCWORDS" : [ 'fountain' ]},
}

def displayLocation(loc):
"""Funkcja wyświetlajaca lokacje"""
# Wypisz pokój
print(loc)
print('=' * len(loc))

print('\n'.join(textwrap.wrap(worldRooms[loc][DESC], SCREEN_WIDTH)))

if len(worldRooms[loc][GROUND]) > 0:
print()
for item in worldRooms[loc][GROUND]:
print(worldItems[item][GROUNDDESC])

# Wypisz wyjścia.
exits = []
for direction in (NORTH, SOUTH, EAST, WEST, UP, DOWN):
if direction in worldRooms[loc].keys():
exits.append(direction.title())
print()
if showFullExits:
for direction in (NORTH, SOUTH, EAST, WEST, UP, DOWN):
if direction in worldRooms[location]:
print('%s: %s' % (direction.title(), worldRooms[location][direction]))
else:
print('Exits: %s' % ' '.join(exits))

def moveDirection(direction):
"""Funkcja zmieniająca lokalizację gracza"""
global location

if direction in worldRooms[location]:
print('You move to the %s.' % direction)
location = worldRooms[location][direction]
displayLocation(location)
else:
print('You cannot move in that direction')

def getAllDescWords(itemList):
"""Opisuje przedmioty z listy."""
itemList = list(set(itemList)) # make itemList unique
descWords = []
for item in itemList:
descWords.extend(worldItems[item][DESCWORDS])
return list(set(descWords))

def getAllFirstDescWords(itemList):
"""Skrocony opis."""
itemList = list(set(itemList)) # make itemList unique
descWords = []
for item in itemList:
descWords.append(worldItems[item][DESCWORDS][0])
return list(set(descWords))

def getFirstItemMatchingDesc(desc, itemList):
itemList = list(set(itemList)) # make itemList unique
for item in itemList:
if desc in worldItems[item][DESCWORDS]:
return item
return None

def getAllItemsMatchingDesc(desc, itemList):
itemList = list(set(itemList)) # make itemList unique
matchingItems = []
for item in itemList:
if desc in worldItems[item][DESCWORDS]:
matchingItems.append(item)
return matchingItems

Czyszczenie konsoli


import sys, os

def clear():
if name == 'nt':
_ = system('cls')
else:
_ = system('clear')