Skip to content

Commit 5ae79c1

Browse files
committed
Cleanup
1 parent 24c4e98 commit 5ae79c1

File tree

3 files changed

+58
-61
lines changed

3 files changed

+58
-61
lines changed

client/flappyoinky/flappyoinky.go

+19-17
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func loadImage(data []byte) image.Image {
4141
return img
4242
}
4343

44-
// Die Größe des Vogels wird anhand der Größe des Fensters zu einem Quadrat ergänzt.
44+
// Die Größe des Oinkys wird anhand der Größe des Fensters zu einem Quadrat ergänzt.
4545
func getVisualOinkySize() int {
4646
windowWidth, windowHeight := ebiten.WindowSize()
4747
if windowWidth >= windowHeight {
@@ -67,7 +67,7 @@ func (p *player) clientTick(delta float64) {
6767

6868
skippedTicks := int(math.Trunc(delta))
6969
for i := 1; i <= skippedTicks; i++ {
70-
speedY += shared.OinkySpeedYIncreasePerTick
70+
speedY += shared.OinkyAccelerationY
7171
posY += speedY
7272
}
7373
remainingDelta := delta - float64(skippedTicks)
@@ -155,14 +155,17 @@ func (o *obstacle) draw(screen *ebiten.Image) {
155155
windowWidth, windowHeight := ebiten.WindowSize()
156156
width := int(shared.ObstacleWidth * float64(windowWidth))
157157

158-
upper := ebiten.NewImage(width, int(o.freeSpaceUpperY*float64(windowHeight)))
159-
addObstacleTexture(upper)
160-
var upperDrawOptions ebiten.DrawImageOptions
161-
upperDrawOptions.GeoM.Translate(o.clientPosX*float64(windowWidth), 0)
162-
screen.DrawImage(upper, &upperDrawOptions)
158+
upperHeight := int(o.freeSpaceUpperY * float64(windowHeight))
159+
if upperHeight > 0 {
160+
upper := ebiten.NewImage(width, upperHeight)
161+
addObstacleTexture(upper)
162+
var upperDrawOptions ebiten.DrawImageOptions
163+
upperDrawOptions.GeoM.Translate(o.clientPosX*float64(windowWidth), 0)
164+
screen.DrawImage(upper, &upperDrawOptions)
165+
}
163166

164167
lowerHeight := int((1 - o.freeSpaceLowerY) * float64(windowHeight))
165-
if lowerHeight > 0 { // Wenn lowerHeight 0 ist erzeugt der Aufruf von NewImage einen panic
168+
if lowerHeight > 0 {
166169
lower := ebiten.NewImage(width, lowerHeight)
167170
addObstacleTexture(lower)
168171
var lowerDrawOptions ebiten.DrawImageOptions
@@ -184,29 +187,26 @@ var _ game.Game = (*impl)(nil)
184187

185188
func create(client game.Client) game.Game {
186189
return &impl{
187-
client: client,
190+
client: client,
191+
lastTickTime: time.Now().UnixMilli(),
188192
}
189193
}
190194

191195
var _ game.Creator = create
192196

193197
func (i *impl) HandleGameStarted() {
194-
i.lastTickTime = time.Now().UnixMilli()
195-
196198
partyPlayers := i.client.PartyPlayers()
197199
i.players = make(map[int32]*player, len(partyPlayers))
198-
for id, partyPlayer := range partyPlayers {
200+
for id := range partyPlayers {
199201
i.players[id] = &player{
200-
id: partyPlayer.Id,
202+
id: id,
201203
serverPosY: shared.OinkyStartPosY,
202204
clientPosY: shared.OinkyStartPosY,
203205
serverSpeedY: 0,
204206
clientSpeedY: 0,
205207
rotation: 0,
206208
}
207209
}
208-
209-
i.obstacles = nil
210210
}
211211

212212
func (i *impl) HandleGameEnded() {}
@@ -253,9 +253,11 @@ func (i *impl) HandlePacket(packet []byte) error {
253253
i.obstacleCount = update.ObstacleCount
254254

255255
i.lastTickTime = time.Now().UnixMilli()
256-
}
257256

258-
return nil
257+
return nil
258+
default:
259+
return fmt.Errorf("unknown packet name: %s", packetName)
260+
}
259261
}
260262

261263
func (i *impl) obstacleCounter() *ui.Text {

flappyoinky/flappyoinky.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package flappyoinky
22

3-
// Die X und Y Koordinaten der Vögel und Hindernisse sind vom Typ float64 und liegen im Bereich 0 bis 1.
3+
// Die X und Y Koordinaten der Oinkys und Hindernisse sind vom Typ float64 und liegen im Bereich 0 bis 1.
44
// Der Punkt (0, 0) liegt in der oberen linken Ecke des Bildschirmes.
5-
// Die Koordinaten von den Vögeln und Hindernissen geben Auskunft über die Position der oberen linken Ecke der jeweiligen Objekte.
6-
// Der X/Y Speed Wert der Vögel und Hindernisse gibt an, um wie viel die X/Y Position des Objektes pro Tick erhöht wird.
7-
// Der Speed Wert der Vögel steigt pro Tick, während der, der Hindernisse konstant ist.
5+
// Die Koordinaten von den Oinkys und Hindernissen geben Auskunft über die Position der oberen linken Ecke der jeweiligen Objekte.
6+
// Der X/Y Speed Wert der Oinkys und Hindernisse gibt an, um wie viel die X/Y Position des Objektes pro Tick erhöht wird.
7+
// Der Speed Wert der Oinkys steigt pro Tick, während der der Hindernisse konstant ist.
88
// Jeden Tick wird ein UpdatePacket vom Server an alle Spieler versand.
99
// Die Spieler teilen dem Server mit, wenn ihr eigener Vogel springen soll.
1010
// Der Server entscheidet darüber, ob Spieler gestorben sind.
@@ -13,11 +13,11 @@ package flappyoinky
1313
const (
1414
Name = "flappyoinky"
1515

16-
OinkySize = 0.06 // Die Höhe und Breite des Vogels
17-
OinkyPosX = 0.5 - OinkySize/2 // Die permanente X Position der oberen linken Ecke des Vogels
18-
OinkyStartPosY = 0.5 - OinkySize/2 // Die Y Position der oberen linken Ecke der Vögel, bei der sie sich am Anfang des Spieles befinden
19-
OinkySpeedYIncreasePerTick = 0.001 // Der Wert, mit dem die Geschwindigkeit der Vögel jede Sekunde erhöht wird
20-
OinkySpeedYAfterJump = -0.02 // Der Wert der Geschwindigkeit der Vögel nach einem Sprung
16+
OinkySize = 0.06 // Die Höhe und Breite des Oinkys
17+
OinkyPosX = 0.5 - OinkySize/2 // Die permanente X Position der oberen linken Ecke des Oinkys
18+
OinkyStartPosY = 0.5 - OinkySize/2 // Die Y Position der oberen linken Ecke der Oinkys, bei der sie sich am Anfang des Spieles befinden
19+
OinkyAccelerationY = 0.001 // Der Wert, mit dem die Geschwindigkeit der Oinkys jede Sekunde erhöht wird
20+
OinkySpeedYAfterJump = -0.02 // Der Wert der Geschwindigkeit der Oinkys nach einem Sprung
2121

2222
ObstacleSpawnRate = 70 // Der Abstand in Ticks, in dem Hindernisse spawnen
2323
ObstacleWidth = 0.06 // Die Breite der Hindernisse
@@ -37,7 +37,7 @@ type JumpPacket struct {
3737

3838
type PlayerUpdateData struct {
3939
Player int32 // Die ID des Spielers
40-
PositionY float64 // Die aktuelle Y Position des Vogels
40+
PositionY float64 // Die aktuelle Y Position des Oinkys
4141
SpeedY float64 // Die Geschwindigkeit, mit der PositionY pro Tick erhöht wird
4242
}
4343

server/flappyoinky/flappyoinky.go

+29-34
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import (
1212
)
1313

1414
type player struct {
15-
id int32 // Die ID des Spielers, zu dem dieser Vogel gehört
16-
positionY float64 // Die Y Position der oberen linken Ecke des Vogels
15+
id int32
16+
positionY float64 // Die Y Position der oberen linken Ecke des Oinkys
1717
speedY float64 // Die Geschwindigkeit, mit der positionY pro Tick erhöht wird
1818
}
1919

@@ -42,7 +42,7 @@ func (p *player) isTouchingObstacle(obstacles []*obstacle) bool {
4242
}
4343

4444
func (p *player) tick() {
45-
p.speedY += shared.OinkySpeedYIncreasePerTick
45+
p.speedY += shared.OinkyAccelerationY
4646
p.positionY += p.speedY
4747
}
4848

@@ -59,14 +59,17 @@ func (p *player) toUpdateData() shared.PlayerUpdateData {
5959
}
6060

6161
func randomObstacleFreeSpace() (lowerY, upperY float64) {
62-
freeSpaceLowerY := 1 - float64(rand.Intn(10-shared.ObstacleFreeSpaceHeight*10))*0.1
63-
freeSpaceUpperY := freeSpaceLowerY - shared.ObstacleFreeSpaceHeight
64-
return freeSpaceLowerY, freeSpaceUpperY
62+
lowerY = rand.Float64()
63+
if lowerY-shared.ObstacleFreeSpaceHeight < 0 {
64+
lowerY = 1 - shared.ObstacleFreeSpaceHeight
65+
}
66+
upperY = lowerY - shared.ObstacleFreeSpaceHeight
67+
return
6568
}
6669

6770
type obstacle struct {
68-
freeSpaceLowerY float64 // Die Y Koordinate, die die untere Begrenzung des freien Platzes angibt
69-
freeSpaceUpperY float64 // Die Y Koordinate, die die obere Begrenzung des freien Platzes angibt
71+
freeSpaceLowerY float64 // Die Y Koordinate der oberen Kante des unteren Teils des Hindernisses
72+
freeSpaceUpperY float64 // Die Y Koordinate der unteren Kante des oberen Teils des Hindernisses
7073
posX float64 // Die X Position der linken Kante des Hindernisses
7174
}
7275

@@ -100,17 +103,16 @@ func create(party game.Party) game.Game {
100103
return &impl{
101104
party: party,
102105
alivePlayers: make(map[int32]*player, len(party.Players())),
103-
obstacles: make([]*obstacle, 0),
104106
ticksUntilNextObstacle: shared.ObstacleSpawnRate,
105107
}
106108
}
107109

108110
var _ game.Creator = create
109111

110112
func (i *impl) HandleGameStarted() {
111-
for _, partyPlayer := range i.party.Players() {
112-
i.alivePlayers[partyPlayer.Id()] = &player{
113-
id: partyPlayer.Id(),
113+
for id := range i.party.Players() {
114+
i.alivePlayers[id] = &player{
115+
id: id,
114116
positionY: shared.OinkyStartPosY,
115117
speedY: 0,
116118
}
@@ -135,20 +137,22 @@ func (i *impl) HandlePacket(sender game.Player, data []byte) error {
135137

136138
switch packetName {
137139
case shared.JumpPacketName:
138-
data, ok := i.alivePlayers[sender.Id()]
140+
player, ok := i.alivePlayers[sender.Id()]
139141
if !ok {
140142
return errors.New("invalid player id")
141143
}
142144

143-
data.jump()
144-
}
145+
player.jump()
145146

146-
return nil
147+
return nil
148+
default:
149+
return fmt.Errorf("unknown packet name: %s", packetName)
150+
}
147151
}
148152

149153
func (i *impl) Tick() {
150-
gameEnded := i.tickPlayers()
151-
if gameEnded {
154+
if gameEnded := i.tickPlayers(); gameEnded {
155+
i.party.EndGame()
152156
return
153157
}
154158
i.tickObstacles()
@@ -180,13 +184,10 @@ func (i *impl) broadcastUpdatePacket() {
180184

181185
func (i *impl) tickPlayers() (gameEnded bool) {
182186
for id, player := range i.alivePlayers {
183-
partyPlayer := i.party.Players()[id]
184-
185187
player.tick()
186188

187189
if player.isOutsideWorld() || player.isTouchingObstacle(i.obstacles) {
188-
gameEnded := i.killPlayer(partyPlayer)
189-
if gameEnded {
190+
if gameEnded := i.killPlayer(id); gameEnded {
190191
return true
191192
}
192193
}
@@ -195,27 +196,21 @@ func (i *impl) tickPlayers() (gameEnded bool) {
195196
return false
196197
}
197198

198-
func (i *impl) killPlayer(player game.Player) (gameEnded bool) {
199-
delete(i.alivePlayers, player.Id())
200-
201-
if len(i.alivePlayers) == 0 {
202-
i.party.EndGame()
203-
return true
204-
}
205-
206-
return false
199+
func (i *impl) killPlayer(id int32) (gameEnded bool) {
200+
delete(i.alivePlayers, id)
201+
return len(i.alivePlayers) == 0
207202
}
208203

209204
func (i *impl) tickObstacles() {
210205
i.ticksUntilNextObstacle--
211206

212-
if i.ticksUntilNextObstacle == 0 {
207+
if i.ticksUntilNextObstacle <= 0 {
213208
i.ticksUntilNextObstacle = shared.ObstacleSpawnRate
214209

215210
i.spawnNewObstacle()
216211
}
217212

218-
i.filterObstacles()
213+
i.removeObstaclesOutsideWorld()
219214

220215
for _, obstacle := range i.obstacles {
221216
obstacle.tick()
@@ -236,7 +231,7 @@ func (i *impl) spawnNewObstacle() {
236231
i.obstacles = append(i.obstacles, newObstacle)
237232
}
238233

239-
func (i *impl) filterObstacles() {
234+
func (i *impl) removeObstaclesOutsideWorld() {
240235
obstacles := make([]*obstacle, 0, len(i.obstacles))
241236
for _, o := range i.obstacles {
242237
if !o.isOutsideWorld() {

0 commit comments

Comments
 (0)