Mein Name ist Christian und ich bin hobbymässig am Python üben. Damit das Ganze auch so richtig Spass macht, habe ich direkt mit einem Game angefangen. Genauer gesagt ich bin dabei einen kleinen ASCII-Dungeoncrawler zu schreiben.
Vor einiger Zeit habe ich bereits einmal in diesem Forum gepostet. Ich habe damals sehr coole Typs (insbesondere von BlackJack) erhalten, wie ich meinen Code (in einem anderen Beispiel) verbessern kann. Ich würde mich auch bei meinem jetzigen kleinen Projekt (ASCII-Dungencrawler) über Feedbacks von euch zwecks Verbesserung meines Codes freuen.
Hier mein Code:
Code: Alles auswählen
class Character:
""" Erstellt ein Character (Monster oder Player) """
def __init__(self, name, symbol, position = (0,0)):
self.max_hitpoints = 50
self.hitpoints = self.max_hitpoints
self.attack_power = 5
self.position = position
self.name = name
self.symbol = symbol
def attack(self, enemy):
pass
class Grid:
"""erstellt ein Grid
es muss Grösse in Form einer Liste (x,y) als Parameter angegeben werden"""
def paint_grid(self):
""" Zeichnet das Grid inkl. Character-Objecte auf den Bildschirm """
# Zeichnet leeres Grid
self.grid = []
for column in range(self.y):
self.grid.append([])
for row in range(self.x):
self.grid[column].append("_")
# Fügt Wände dem Grid hinzu
wall_x = 0
wall_y = -1
for row in self.wallist:
wall_y += 1
wall_x = -1
for wall in row:
wall_x += 1
if wall == 1:
self.grid[wall_y][wall_x] = '#'
# Fügt Character-Objekte dem Grid hinzu
for monster in self.monsterlist:
monster_x, monster_y = monster.position
self.grid[monster_x][monster_y] = monster.symbol
# Print Grid on Screen
for liste in self.grid:
for item in liste:
print(item, end = " ")
print()
def import_monster(self, monster):
""" Importiert Monster in das Grid, es muss als Paramter ein Monsterobject angegeben werden"""
for item in self.monsterlist:
if monster.position == item.position:
raise Exception ("There is already annother Monster on that position")
self.monsterlist.append(monster)
def remove_monster(self, monster):
""" Löscht Monster vom Grid, es muss als Paramter ein Monsterobject angegeben werden"""
for item in self.monsterlist:
monsterlist.pop(monster)
def show_monster(self):
""" Zeigt alle Monster auf dem Grid """
counter = 1
for monster in self.monsterlist:
print("Monster Nr. {}, Name: {}, Position: {}".format(counter, monster.name, monster.position))
counter += 1
self.paint_grid()
def import_walls(self, walls):
""" Importiert eine Walls-Liste """
self.wallist = walls
def __init__(self, grid_size):
self.x, self.y = grid_size
self.monsterlist = []
self.walllist = []
""" Testing """
oggar = Character("Oggar", "O", (2,2))
rudolf = Character("Rudolf", "R", (3,3))
# walls ist eine liste mit weiteren listen. diese listen stellen praktisch das spielfeld
# dar. 1 = solid wall, 0 = keine wall
walls = [
[1, 1, 1, 1, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1],
[1, 0, 0, 0, 1],
[1, 1, 1, 1, 1]
]
map = Grid((5,5))
map.import_monster(oggar)
map.import_monster(rudolf)
map.import_walls(walls)
map.paint_grid()
Ich bin für alles Tipps dankbar. Lieber Gruss, Christian