在围捕器100中。编码挑战(mit Fortsetzung)讨厌Daniel Shiffman gezeigt。 Grundlage war sein eigener Flappy-Bird-Klon,定义在P5.js中,dem JavaScript-Mode von Processing ,实现者为对象。 Natürlichreizt das zur Nachahmung(Python版),神经进化算法(NEAT)工资,Programmeersprache meines的Möchteich zurÜbung(作者),Flappy-Bird-Klon bauen。 Damit ich nic we zu weit von Shiffmans Vorgaben abweiche,Processing.py中的程序员,dem Python-Mode von Processing。

Um das Ganzeaufzuhübschen,在德国的伏尔加斯州立大学,在德意志的Twitter上,Twemojis,einer freien(MIT-Lizenzfürden Code und CC-BY 4.0fürdie Graphiken)和Emoji-Implementierung成为了经济学家。 图片来自32×32 Pixeln zurechtgestutzt。 Naturlichheißtdas Programm nuchht 蓬松的 鸟 ,松软的鱼儿 。

Zuerst habe ich im Hauptsketch和Grundlagen gelegt:
from fish import Fish
fluffyFish = Fish()
def setup():
size(640, 320)
fluffyFish.loadPic()
def draw():
background(0, 153, 204)
fluffyFish.update()
fluffyFish.display()
def keyPressed():
if (key == " "):
# print("SPACE")
fluffyFish.up()
Wie man leicht sieht,wird ein Modul fish.pybenötigt。 还有哈伯·艾希斯(Habe ich)去世
class Fish():
def __init__(self):
self.x = 50
self.y = 240
self.r = 32
self.gravity = 0.6
self.lift = -12
self.velocity = 0
def loadPic(self):
self.pic = loadImage("fisch2.png")
def up(self):
self.velocity += self.lift
def display(self):
image(self.pic, self.x, self.y)
def update(self):
self.velocity += self.gravity
self.velocity *= 0.9
self.y += self.velocity
if (self.y >= height - self.r):
self.y = height - self.r
self.velocity = 0
elif (self.y <= 0):
self.y = 0
self.velocity = 0
戴米·埃斯维耶特·沃登·坎恩 Nek dem Konstruktor的头衔是Klasse Fish
: loadPic()
绑定到Fisches和methode display()
的位置和位置。 在Fisch的Method Method update()
,Spieler nicht eingreift跌倒了,Einfach nach unten。 刻有情节的人有自己的魅力。 北登·沃尔滕(Bei den Werten)的死者康斯坦滕(Konstanten)死于希夫曼斯· 贝斯皮尔( Siffiffs)的东方人, Leer ist aufgefordert,实验者selber mit anderen Werten zu spielen。 Wenn der Spieler和Leertastedrückt,Wild die Methode up()
aufgerufen,和Fisch nach obenhüpfenläßt。
国防部国防军总司令部,国防部新闻update()
–国防部国防军将军和国防部长。
国防部执行本领。 Der Fischfällt,Spieler nicht eingreift,Nach unten,Spieler kann ihn durchBetätigender Leertaste nach oben katapultieren落下。 喷气式飞机在德国的Fisch nur Noch死于SäulenEntgegenkommen,在秋天到了秋天。 Dafürhabe ich eine Datei pipes.py
angelegt,死于Klasse Pipe
beherbergt:
class Pipe():
def __init__(self):
self.top = random(height) - 60
if self.top < 60:
self.top = 60
if self.top > height - 180:
self.top = height - 180
self.bottom = height - self.top - 120
# self.bottom = random(height/2)
self.x = width
self.w = 40
self.speed = 2
self.hilite = False
def display(self):
fill(0, 125, 0)
if self.hilite:
fill(255, 0, 0)
rect(self.x, 0, self.w, self.top)
rect(self.x, height - self.bottom, self.w, self.bottom)
def update(self):
self.x -= self.speed
def offscreen(self):
if (self.x < -self.w):
return True
else:
return False
def collidesWith(self, otherObject):
if (otherObject.y height - self.bottom):
if (otherObject.x + otherObject.r > self.x) and (otherObject.x < self.x + self.w):
return True
else:
return False
Im Gegensatz zu Shiffman ,Der dieHöhebeiderSäulenkomplett vom Zufallabhängigmachte和dadurch Riskierte,daßder abstand zwischen zweiSäulenso klein wurde,daßsein Vogel dort nicht durchferen-undeungen盖森(Gesehen),阿比斯坦(Abstand),德比登(SidenSäulen),沉迷于狂热的战争。 您可以按照每当初生成的像素数来获取数据,然后再使用120像素的像素数来获取数据。 Damit auch beideSäulenimmer zu sehen sind,habe ich mit den Werten 60
and 180Mindesthöhenfestgelegt。 Diese Werte参加了实验。
Method display()
Lindgrün的位置下降,并在Normalfall下降,在Knallrot的Fisch mit einer derSäulenkollidiert下降(hilite hilite = True
)。 方法update()
将使speed
上升到Fisch zu的speed
。
Methodie offscreen()
Hilfsfunktion,benötigtwird,Hauptprogramm和Säulen,das Fenster与verlassn haben,zulöschen链接。 Und mit der Methode collidesWith()
Fisch undSäulezusammenstoßen collidesWith()
。 Diese Methode kann man sicher noch optimieren,Zwecke des Spiels reicht sievölligaus。
Natürlichistjetz auch das Hauptprogramm ein wenig angeschwollen。 在《末日报》中的埃西耶特:
from fish import Fish
from pipes import Pipe
fluffyFish = Fish()
pipes = []
def setup():
size(640, 320)
fluffyFish.loadPic()
pipe = Pipe()
pipes.append(pipe)
def draw():
background(0, 153, 204)
for i in range(len(pipes) - 1, -1, -1):
if pipes[i].offscreen():
pipes.pop(i)
# print(str(len(pipes)))
if pipes[i].collidesWith(fluffyFish):
pipes[i].hilite = True
else:
pipes[i].hilite = False
pipes[i].update()
pipes[i].display()
fluffyFish.update()
fluffyFish.display()
if (frameCount % 100 == 0):
pipe = Pipe()
pipes.append(pipe)
def keyPressed():
if (key == " "):
# print("SPACE")
fluffyFish.up()
内斯特·菲施(Neben dem Fisch setup()
李斯特(Liste) pipes[]
初始化,我在setup()
einer einzigenSäulegefülltwird。 Alle weiterenSäulenkommen在der draw()
-Funktion jeweils dann hinzu,wenn der frameCount
模为100 Null ergiebt,以及bei jedem Hundertsten Durchlauf。
Wichtig ist,daß,wenn man Liste enternt成员, Listerückwärtsdurchlaufenläßt的工作人员。 Andernfalls werner nicht nur einzelne Elemente der Listeübersprungen,其他人erhältauch denberüchtigten index out of range
-Fehler。 达希尔·伍尔德去世
for i in range(len(pipes) - 1, -1, -1):
if pipes[i].offscreen():
pipes.pop(i)
实施 在der range()
正确参数-Startwert的功能,zwerite的参数,Endwert和dritte的参数,Schrittlänge。 尊敬的丹尼尔·恩德维尔特(Gert es nun aufzupassen)女士(mathematisch gesprochen wird das halboffen Intervall [startwert, endwert[
aufgerufen)。 Würdeman也将参数0
更改为0
,soundern bei 0
更改为1
,元素列表也将更改为abgefragt。
Anschließendwirdüberprüft,Ober der Fisch mit einer der beidenSäulenkollidiert。 True
魅力, True
梦想家, False
奥尔伯,艺术的朋克艺术大师和芬迪·斯皮尔·贝迪特作家。
Nun funktioniert das Spiel wiegewünscht。 Wie gesagt,参数化的知识和技巧,Großen和Ganzen der Implementierung von Daniel Shiffman以及Stere nun for weitere bereit。