MyIsland UPDATE [Pre Beta 0.1]
- Beta
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 62 Antworten in diesem Thema. Der letzte Beitrag () ist von Eistee.
-
-
-
-
-
-
-
-
Wenn du so viele Controls erstellst, dann hat jedes seinen eigenen Zeichenbereich, und da hängt ziemlich viel hinten dran. Deshalb werden Anwendungen mit vielen Controls laggy und verbrauchen viel Arbeitsspeicher. Außerdem können dadurch sehr unschöne Bildartefakte entstehen, weil eben nicht alles der selbe Zeichenbereich ist.
Das mit dem Mausklick ist einfach nur Mathematik, Prozentrechnen wirst du ja hoffentlich können. -
-
Du hast eine Liste von deinen Feldern, ein Tile hat eine Location Eigenschaft und eine Size eigenschaften, wenn nun die Maus im Bereich von Location + Size liegt, und Mousedown auf der Form getätigt wurde, wurde Feld X gedrückt
-
Marcel1997 schrieb:
prozentrechnung damit zu tun -
-
-
Das hat mit GDI+ nix zu tun, denn das virtuelle Spielfeld hat mit der Darstellung des Spielfeldes erstmal nichts zu tun.
Als Tile bezeichnet man die kleinste Einheit, aus der sich die Karte zusammensetzt, gleichzusetzen mit einem Pixel am Bildschirm (wenngleich ein Tile theoretisch nicht quadratisch sein muss). -
Du könntest dir für dein SPiel beispielsweise ein 2D Array vom Typ Byte machen (Zahl von 0-255) und anhand der Position des Byt's sowie des aktuellen Wertes des Byt's kannst du dort zeichnen was du willst.
Spart unglaublch Performance und ist auch noch einfacher als wild mit Controls rumzufuchteln und irgenwann festzustellen das Controls für Spiele ungeeignet sind. Wenn du nicht weisst was ich meine frag, es gibt hier viele hochkarätige Leute (Artentus,ThuCOmmix und so weiter) die dir bestimmt auch weiterhelfen, desweiteren solltest du dich in Spieleentwicklung einlesen wenn du dich wirklich ersnthaft damit beschäftigen willst.
mfg
Paul"yippieh! it compiles - ship it!" -
Habe mal aus langeweile daran gebastelt:
BlockTile.vb VB.NET-Quellcode
- Public Class BlockTile
- Dim yer As Integer
- Public Property Y() As Integer
- Get
- Return yer
- End Get
- Set(ByVal value As Integer)
- yer = value
- End Set
- End Property
- Dim xer As Integer
- Public Property X() As Integer
- Get
- Return xer
- End Get
- Set(ByVal value As Integer)
- xer = value
- End Set
- End Property
- Public Enum Blocks
- Water
- Oil
- Gras
- Tree
- End Enum
- Dim ty As Blocks
- Public Property [Type]() As Blocks
- Get
- Return ty
- End Get
- Set(ByVal value As Blocks)
- ty = value
- End Set
- End Property
- Sub New(ByVal xcoor As Integer, ByVal ycoor As Integer, ByVal Blocktype As Blocks)
- X = xcoor
- Y = ycoor
- ty = Blocktype
- Rectangle = New Rectangle(CInt(X * 30) - 1, CInt(Y * 30) - 1, 30, 30)
- End Sub
- Dim rect As Rectangle
- Public Property Rectangle() As Rectangle
- Get
- Return rect
- End Get
- Set(ByVal value As Rectangle)
- rect = value
- End Set
- End Property
- End Class
Form1.vb VB.NET-Quellcode
- Option Strict On
- Public Class Form1
- Dim blocklist As New List(Of BlockTile)
- Public Sub CreateBlock(ByVal X As Integer, ByVal Y As Integer, ByVal block As BlockTile.Blocks, ByVal g As Graphics)
- Dim brusher As Brush = Nothing
- Dim typus As BlockTile.Blocks
- If block = BlockTile.Blocks.Gras Then
- brusher = Brushes.Green
- ElseIf block = BlockTile.Blocks.Water Then
- brusher = Brushes.Blue
- ElseIf block = BlockTile.Blocks.Tree Then
- brusher = Brushes.DarkGreen
- ElseIf block = BlockTile.Blocks.Oil Then
- brusher = Brushes.Gray
- End If
- typus = block
- Dim newblock As New BlockTile(X, Y, typus)
- blocklist.Add(newblock)
- g.FillRectangle(brusher, newblock.Rectangle)
- End Sub
- Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
- For Each blo As BlockTile In blocklist
- If blo.Rectangle.Contains(pt) Then
- Select Case blo.Type
- Case BlockTile.Blocks.Gras
- MessageBox.Show("Gras")
- Case BlockTile.Blocks.Oil
- MessageBox.Show("Oil")
- Case BlockTile.Blocks.Tree
- MessageBox.Show("Tree")
- Case BlockTile.Blocks.Water
- MessageBox.Show("Water")
- End Select
- End If
- On Error Resume Next
- Next
- End Sub
- Dim pt As Point
- Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
- pt = e.Location
- End Sub
- Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
- CreateBlock(2, 3, BlockTile.Blocks.Oil, e.Graphics)
- End Sub
- End Class
So über die blocklist kannst du die Karte so abspeichern: Typus|X|Y
Und beim laden per Split oder RegEx zerteilen und durch die CreatBlocks-Methode neu aufzeichnen.
=> Feddich
faxe1008
-
-
-
Gute Nachricht!
Dank vielen hilfreichen Links & Co
gibt es bald eine neue Version von MyIsland!
MyIsland beta 1.0
Mit GDI+, Doppelbuffering via Bitmap und neuem "Inselgenerator"!
Vielen dank und ein erster Screenshot im Anhang:
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcel1997“ ()
-
-
Tags
-
Ähnliche Themen
-
Minecraft Downgrader v 2.50.1 Release
INK-Software - - Kleinkram
-
11 Benutzer haben hier geschrieben
- Marcel1997 (22)
- Gast (14)
- paulkoch95 (6)
- Artentus (6)
- nafets (4)
- Trade (3)
- ThuCommix (2)
- Gather (2)
- faxe1008 (2)
- Schamash (1)
- Plexian (1)