Hi,
Da ich mittlerweile kleinere Brettspiele mit GDI realisiert habe möchte ich mich mal an einem einfachen J&R probieren. Das Spiel soll so funktionieren, dass man seine Figur durch das drücken der Leertaste hochspringen lassen kann umso Wänden auszuweichen die sich auf einen zu bewegen. So soll dasn ganze grob bisher aussehen:
Ich habe auch schon an den grundlegenden Sachen gearbeitet(Verfeinerung des Smoothmodes etc kommt später):
Spoiler anzeigen
Jetzt meine Frage: wie löse ich das konzeptmäßig am Intelligentesten? Bewegt sich der Hindergrund und der Spieler "bleibt stehen", oder lasse ich den Spieler sich bewegen und der Hintergrund wird wird quasi nur weitergespult? Das Problem bei der Frage ist, dass der Spieler nur die Höhe kontrollieren soll und die Figur quasi nur weiter fliegt/ geht. Außerdem muss sich auch die "Geschwindigkeit des Objektes" erhöhen können. Kommt es zu großen Performanceproblemen wenn ich mit GDI statt mit SharpDx arbeite?
Hier mal die Vorlage:
JetpackJoyride
Danke für eure Hilfestellung
Da ich mittlerweile kleinere Brettspiele mit GDI realisiert habe möchte ich mich mal an einem einfachen J&R probieren. Das Spiel soll so funktionieren, dass man seine Figur durch das drücken der Leertaste hochspringen lassen kann umso Wänden auszuweichen die sich auf einen zu bewegen. So soll dasn ganze grob bisher aussehen:
Ich habe auch schon an den grundlegenden Sachen gearbeitet(Verfeinerung des Smoothmodes etc kommt später):
VB.NET-Quellcode
- Imports System.Drawing.Drawing2D
- Public Class frmgame
- Private Function Abrunden(ByVal Rect As Rectangle, ByVal radius As Integer) As GraphicsPath
- Dim gp As System.Drawing.Drawing2D.GraphicsPath = New _
- System.Drawing.Drawing2D.GraphicsPath()
- Dim x, y, width, height As Integer
- x = Rect.X
- y = Rect.Y
- width = Rect.Width
- height = Rect.Height
- gp.AddLine(x + radius, y, x + width - radius, y)
- gp.AddArc(x + width - radius, y, radius, radius, 270, 90)
- gp.AddLine(x + width, y + radius, x + width, y + height - radius)
- gp.AddArc(x + width - radius, y + height - radius, radius, radius, 0, 90)
- gp.AddLine(x + width - radius, y + height, x + radius, y + height)
- gp.AddArc(x, y + height - radius, radius, radius, 90, 90)
- gp.AddLine(x, y + height - radius, x, y + radius)
- gp.AddArc(x, y, radius, radius, 180, 90)
- gp.CloseFigure()
- Return gp
- gp.Dispose()
- End Function
- Private Sub DrawPlayerSprite(ByVal rect As Rectangle, ByVal g As Graphics)
- g.DrawImage(Sprite, rect)
- End Sub
- Private Sub DrawWall(ByVal rect As Rectangle, ByVal g As Graphics)
- Dim gp As GraphicsPath
- gp = Abrunden(rect, 5)
- Using lgb As New LinearGradientBrush(rect, Color.Red, Color.Firebrick, LinearGradientMode.Horizontal)
- g.FillPath(lgb, gp)
- End Using
- End Sub
- Public ReadOnly Property Sprite As Image
- Get
- Return My.Resources.Player
- End Get
- End Property
- Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
- DrawPlayerSprite(New Rectangle(80, 80, 45, 45), e.Graphics)
- DrawWall(New Rectangle(400, 100, 20, 100), e.Graphics)
- DrawWall(New Rectangle(140, 300, 20, 100), e.Graphics)
- End Sub
- Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
- If e.KeyCode = Keys.Space Then
- End If
- End Sub
- End Class
Jetzt meine Frage: wie löse ich das konzeptmäßig am Intelligentesten? Bewegt sich der Hindergrund und der Spieler "bleibt stehen", oder lasse ich den Spieler sich bewegen und der Hintergrund wird wird quasi nur weitergespult? Das Problem bei der Frage ist, dass der Spieler nur die Höhe kontrollieren soll und die Figur quasi nur weiter fliegt/ geht. Außerdem muss sich auch die "Geschwindigkeit des Objektes" erhöhen können. Kommt es zu großen Performanceproblemen wenn ich mit GDI statt mit SharpDx arbeite?
Hier mal die Vorlage:
Das soll natürlich nicht so viele Features haben sondern nur die Basis:
Danke für eure Hilfestellung
faxe1008