Im erten Teil meiner kleinen Tutorial-Reihe,与Rogue一样的mit Dem Turtle-Modul von Python程序主编,Habe ich das Labyrinth geschaffen和Unseren Helden,den Rogue ,达林·祖姆·勒本·勒本·艾尔文克特,Den der Spieler Pann der塔斯塔图尔·杜希(Tastatur durch)死于迷宫。 我要在德国的戈尔德施泰克(Goldstücke)的迷宫与达菲尔·索尔根(Dafürsorgen)街上玩游戏,并在哥德(Goldschatz)大街上找到自己的名字。

Dafürbrauchte ich zuerst einmal ein paar Bilder derGoldstückchen,死于wieder bei der freien(CC BY 3.0)TomeTik Tiles图书馆澳大利亚人。 DerSchöpferder Bilder浸入式水槽David E. Gervais和ich habe Ihn hiermitlizenzgemäßgenannt。






达斯·拉登与比尔德登记处在奎尔码附近
wall_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/wall.gif")
player_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/player.gif")
gold1_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold1.gif")
gold2_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold2.gif")
gold3_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold3.gif")
gold4_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold4.gif")
gold5_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold5.gif")
gold6_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold6.gif")
wn.register_shape(wall_shape)
wn.register_shape(player_shape)
wn.register_shape(gold1_shape)
wn.register_shape(gold2_shape)
wn.register_shape(gold3_shape)
wn.register_shape(gold4_shape)
wn.register_shape(gold5_shape)
wn.register_shape(gold6_shape)
曼纳·达斯·纳特里希(Ak dasnatürlich)是一位更聪明的人,他在艾纳(Ener)的《史莱夫》(Sleife)上载了《注册书》(Ale dasüberlasseich zurübungder)。
Die Oberklasse Sprite
wurde mit zwei weiteren Funktionen versehen,Einmal mit der Methode collides_with collides_with()
,
def collides_with(self, other):
a = self.xcor() - other.xcor()
b = self.ycor() - other.ycor()
distance = math.sqrt(a**2 + b**2)
if distance < 5:
return True
else:
return False
电影节,《雪碧》和《雪碧·科利迪》 if distance < 5
, if distance == 0
死于Bedingung; if distance == 0
, if distance == 0
; if distance == 0
, if distance == 0
为零; if distance == 0
, if distance == 0
为零; if distance < 5
等于5, if distance == 0
为零。费斯特光栅公司 可以从Python-Standard-Bibliothek imperertiert werden的数学程序库中获取程序:
import math
import random as r
不愿参加Zufallszahlen-Bibliothek或wirdspäternoch gebraucht。
Dann债死Methode destroy()
,
def destroy(self):
self.goto(5000, 5000)
self.hideturtle()
丹麦国家石油公司和德国国家石油公司以及德国国防军总司令部。
Die Klasse des Spielers ist nahezuunverändertgeblieben,er hat nur die Eigenschaft
self.gold = 0
zusätzlichbekommen。 Dieses leere Portemonnaie soll erwährenddes Spielesauffüllenkönnen。
Neul ist Klasse Treasure
,死于Goldobjekte erzeugen soll:
class Treasure(Sprite):
def __init__(self, shape, x, y, amount):
Sprite.__init__(self, shape)
self.x = x
self.y = y
self.gold = amount
self.goto(self.x, self.y)
Auserdem sind noch zwei weitere听hinzugekommen:
treasures = []
treasure_shapes = [gold1_shape, gold2_shape, gold3_shape,
gold4_shape, gold5_shape, gold6_shape]
treasures
在哥德堡的金币上被发现,并且在treasure_shapes
形成了金币。
我的级别是永恒的,是金色的还是金色的:
level_1 = [
"####################",
"# @# #",
"# ####### ##### #",
"# # #g #",
"# # ##### #",
"####### # # #",
"# # ##### #",
"# ####### # #",
"# # g#",
"# #################",
"# #",
"#### ########### #",
"# g# #",
"# #g #",
"####################"
]
DieBeschränkungauf ASCII-Zechen im Level-Entwurfführtebei denfrühenRogue-likes dazu,最多256个verschiedene 项目 das Spielfeldbevölkernkonnten,坚果类人einen erweiterten ASCII-Satz waren es schon deutlich。 Dennoch hatte ichfrüherbeim Level-Entwurf immers deriistgege numerische Werte bevorzugt,denn死于immerhin 1.000 verschiedene Items zu,aber es machtezugegebenermaßen在Leveldarstellungunübersichtlicher。 在Zeiten von UTF-8和Python 3 kann man gefahrlos die Glyphen-Darstellungwählen中,es stehen einem ja nun Millionen von Zeichen – bis hin zu Emojis – offfen。 (Ein Level-Entwurf,der komplett mit Emojis gezeichnet wurde,daswäredoch mal was。)
数据级别的设置-必威投注网
elif sprite == "g":
treasures.append(Treasure(r.choice(treasure_shapes), screen_x, screen_y,
r.randint(25, 250)))
num_treasures += 1
更高端的人, random
输入。 因果关系的choice()
Einmalwählemit der Funktion choice()
形状列表上的金砖与randint()
Andrewen weise ed jedem Goldschatz mit der Funktion randint()
因果关系25和250 zu。
尖刻的尖刻的尖刻的尖刺。 Sie ist nun immerhin sogroßgeworden,das sie diesen Namen auch verdient:
keepGoing = True
while keepGoing:
for treasure in treasures:
if rogue.collides_with(treasure):
rogue.gold += treasure.gold
print("Goldschatz des Spielers: {} Goldstücke".format(rogue.gold))
treasure.destroy()
num_treasures -= 1
if num_treasures == 0:
print("Glückwunsch, Du hast diesen Level überlebt!")
wn.update()
Jedes Mal,Rogue einen Goldschatz einsackt和Anzahl derGoldschätzeum einen erniedrigt。 Gibt es keineGoldschätzeim Level mehr,wird der Roguefürseine Leistungbeglückwünscht。
Nun aber wieder den kompletten Quellcode zur Kontrolle和fürdiejenigen,死于dies Spiel的状态nachprogrammieren狼吞虎咽:
import turtle as t
import random as r
import os
import math
wn = t.Screen()
wn.bgcolor("black")
wn.title("In den Labyrinthen von Buchhaim – Stage 2")
wn.setup(640, 480)
wall_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/wall.gif")
player_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/player.gif")
gold1_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold1.gif")
gold2_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold2.gif")
gold3_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold3.gif")
gold4_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold4.gif")
gold5_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold5.gif")
gold6_shape = os.path.join(os.getcwd(), "sources/turtle/roguelike/images/gold6.gif")
wn.register_shape(wall_shape)
wn.register_shape(player_shape)
wn.register_shape(gold1_shape)
wn.register_shape(gold2_shape)
wn.register_shape(gold3_shape)
wn.register_shape(gold4_shape)
wn.register_shape(gold5_shape)
wn.register_shape(gold6_shape)
# Die Oberklasse Sprite, zugleich die Klasse für die Mauern des Labyrinths
class Sprite(t.Turtle):
def __init__(self, shape):
t.Turtle.__init__(self)
self.shape(shape)
self.penup()
self.speed(0)
def collides_with(self, other):
a = self.xcor() - other.xcor()
b = self.ycor() - other.ycor()
distance = math.sqrt(a**2 + b**2)
if distance < 5:
return True
else:
return False
def destroy(self):
self.goto(5000, 5000)
self.hideturtle()
# Der Spieler
class Player(Sprite):
def __init__(self, shape):
Sprite.__init__(self, shape)
self.gold = 0
def go_left(self):
go_to_x = self.xcor() - 32
go_to_y = self.ycor()
if (go_to_x, go_to_y) not in walls:
self.goto(go_to_x, go_to_y)
def go_right(self):
go_to_x = self.xcor() + 32
go_to_y = self.ycor()
if (go_to_x, go_to_y) not in walls:
self.goto(go_to_x, go_to_y)
def go_up(self):
go_to_x = self.xcor()
go_to_y = self.ycor() + 32
if (go_to_x, go_to_y) not in walls:
self.goto(go_to_x, go_to_y)
def go_down(self):
go_to_x = self.xcor()
go_to_y = self.ycor() - 32
if (go_to_x, go_to_y) not in walls:
self.goto(go_to_x, go_to_y)
# Die Schätze
class Treasure(Sprite):
def __init__(self, shape, x, y, amount):
Sprite.__init__(self, shape)
self.x = x
self.y = y
self.gold = amount
self.goto(self.x, self.y)
# Listen der Labyrinthe, der Mauern und der Schätze
levels = []
walls = []
treasures = []
treasure_shapes = [gold1_shape, gold2_shape, gold3_shape,
gold4_shape, gold5_shape, gold6_shape]
level_1 = [
"####################",
"# @# #",
"# ####### ##### #",
"# # #g #",
"# # ##### #",
"####### # # #",
"# # ##### #",
"# ####### # #",
"# # g#",
"# #################",
"# #",
"#### ########### #",
"# g# #",
"# #g #",
"####################"
]
levels.append(level_1)
# Level Setup
def setup_maze(level):
global num_treasures
for y in range(len(level)):
for x in range(len(level[y])):
sprite= level[y][x]
screen_x = -308 + (x*32)
screen_y = 224 - (y*32)
if sprite == "#":
wall.goto(screen_x, screen_y)
walls.append((screen_x, screen_y))
wall.stamp()
elif sprite == "@":
rogue.goto(screen_x, screen_y)
rogue.stamp
elif sprite == "g":
treasures.append(Treasure(r.choice(treasure_shapes), screen_x, screen_y, r.randint(25, 250)))
num_treasures += 1
def exitGame():
global keepGoing
keepGoing = False
wall = Sprite(wall_shape)
rogue = Player(player_shape)
# Auf Tastaturereignisse lauschen
t.listen()
t.onkey(rogue.go_left, "Left")
t.onkey(rogue.go_right, "Right")
t.onkey(rogue.go_up, "Up")
t.onkey(rogue.go_down, "Down")
t.onkey(exitGame, "Escape") # Escape beendet das Spiel
wn.tracer(0)
num_treasures = 0
setup_maze(levels[0])
# print(walls)
keepGoing = True
while keepGoing:
for treasure in treasures:
if rogue.collides_with(treasure):
rogue.gold += treasure.gold
print("Goldschatz des Spielers: {} Goldstücke".format(rogue.gold))
treasure.destroy()
num_treasures -= 1
if num_treasures == 0:
print("Glückwunsch, Du hast diesen Level überlebt!")
wn.update()
达斯·斯皮尔(Das Spiel)就是这样,赫拉苏芬登(Herauszufinden)的儿子努尔·埃因·韦拉奇(Herauszufinden)的儿子努尔·斯皮勒(Herausforderungfürden Spieler)是特尔特·莫德(Turtle-Modul)先生,所以请大家帮忙。 ImNächstenTeil dieer kleinen Reihemöchteich den Rogue mit einer Reihe von Monstern konfrontieren,死于Ihm danngefährlichwerdenkönnen。 还在挖!