MyIsland UPDATE [Pre Beta 0.1]

    • Beta

    Es gibt 62 Antworten in diesem Thema. Der letzte Beitrag () ist von Eistee.

      MyIsland UPDATE [Pre Beta 0.1]


      [b]MyIsland


      MyIsland[/b] was ist das?
      MyIsland ist ein Strategie aufbau spiel. Du startest auf einer Zufallsgenerierten Insel und kannst diese Gestallten.
      Pumpe Seen aus, baue Bauernhöfe & mehr...
      Es gibt 400 Felder pro Insel das bedeutet du kannst 400 gebiete deiner Insel bewirtschaften.

      In der Pre Beta 0.1 gibt es noch nicht viel zu tun, lediglich einige grund Dinge...
      Aber an der Beta wird stets gearbeitet ua um die Performance zu verbessern...
      Deshalb bitte ich das schwarze flackern zu entschuldigen.



      Screenshots:
      (Im Anhang)

      Download:
      Im anhang


      Verwendete Programmiersprache:
      - VB/C#

      Systemanforderungen:
      - Windows
      - .Net Framework 2.0

      Lizenz:
      -Freeware


      Geplant:

      bessere Grafik,
      Battle Modus,
      Mehr Möglichkeiten


      Viel Spaß!


      Designer, Sounddesigner und
      Betatester gesucht! Meldet euch doch per PN.

      Bilder
      • screen1.gif

        196,54 kB, 881×599, 254 mal angesehen
      • screen2.gif

        196,67 kB, 880×596, 212 mal angesehen
      • screen3.gif

        194,74 kB, 881×599, 229 mal angesehen
      Dateien
      • MyIsland.zip

        (72,11 kB, 106 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 20 mal editiert, zuletzt von „Marcel1997“ ()

      Zum Spiel:
      Speicher die Blöcke in einem 2D Array, und lese und zeichne sie dann aufs Spielfeld.
      Wenn die Welt größer wird, ist das ein großer vorteil.
      Ausserdem kannst du so auch die "Inseln" in Dateien leicht speichern und lesen.
      Irgenwas stimmt da nicht:
      Am Anfang war das mittlere Feld von den drei blauen Felder grün. Dann hab ich auf das linke Feld ein Water Oil Rig gebaut, dieses erschien dann aber auf dem mittleren Feld. Als ich das Water Oil Rig wieder abgerissen habe(auch wieder in dem ich auf das linke Feld geklickt habe), sah das ganze so aus wie in dem Bild im Anhang. Jetzt kann ich auf das mittlere Feld trotzdem Bäume pflanzen und ernten.

      (Bezieht sich alles auf die Insel im Anhang)


      Jannik

      Edit: die ganze 7. Zeile scheint um eins nach rechts verschoben zu sein
      Bilder
      • Bild1.png

        26,43 kB, 243×169, 409 mal angesehen
      @Trade: nein, habe ich nicht, da die einzelnen bilder sich nicht viel verändern ausser dem bild,
      habe ich darauf verzichtet und einfach pictureboxen verwendet :D

      @SchokoMilch: vielen danke für die Idee, werd ich wahrscheinlich so machen ;)

      @jannik96: Danke für diesen Hinweiß ich werds mir anschauen und berichtigen!

      Vielen Dank an euch alle :D

      Ach ja und später wird auch noch ein Update kommen!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcel1997“ ()

      Autsch. Benutz doch GDI bitte. Ein Spiel mit Controls ist nur sehr schwer zu erweitern. Such mal nach e.Graphics.DrawImage() und arbeite damit :).

      Bau dir eine Function in der du die Koordinaten des Blocks angibst und die Art des Blocks. Bsp.: CreateBlock(2, 3, Blocks.Water). Die einzelnen Arten der Blöcke würde ich in ein Enum packen, das ist übersichtlicher als dauernd mit Strings rumzuwurschteln.

      VB.NET-Quellcode

      1. Public Function CreateBlock(ByVal X As Integer, ByVal Y As Integer, ByVal block As Blocks, ByVal g As Graphics)
      2. Select Case block
      3. Case Blocks.Gras
      4. g.FillRectangle(Brushes.Green, New Rectangle(CInt(X * 30) - 1, CInt(Y * 30) - 1, 30, 30))
      5. Case Blocks.Water
      6. g.FillRectangle(Brushes.Blue, New Rectangle(CInt(X * 30) - 1, CInt(Y * 30) - 1, 30, 30))
      7. End Select
      8. End Function
      9. Public Enum Blocks
      10. Water
      11. Oil
      12. Gras
      13. Tree
      14. End Enum
      15. Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
      16. CreateBlock(0, 1, Blocks.Water, e.Graphics)
      17. CreateBlock(4, 1, Blocks.Water, e.Graphics)
      18. End Sub


      Ich habe hier nur .FillRectangle genommen weil ich keine Bilder hatte :) . Ahh habe gerade gemerkt dass es eine Sub sein müsste da es keinen Rückgabewert gibt.

      8-) faxe1008 8-)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „faxe1008“ ()

      Also,
      @nafets3646 Danke ;)

      @faxe1008 ok, aber dann habe ich noch 1 Fragen. und wie kann ich überprüfen was geklickt wurde und was für eine art von Feld und an welcher Position das ausgewählte ist?
      wie speichere ich dass dann zwischen?

      Ich hab noch nicht viel mit GDI zu tun gehabt, deshalb entschuldige bitte das Unwissen :D
      Da ich mich auch gerade in GDI versuche hab ich das mal als mögliche übung verwendet:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Public Class Test
      2. Private recGras(0) As Rectangle
      3. Private recWater(0) As Rectangle
      4. Private recOil(0) As Rectangle
      5. Private recTree(0) As Rectangle
      6. Private rec As Rectangle
      7. Private brush As Brush
      8. Public Function CreateBlock(ByVal X As Integer, ByVal Y As Integer, ByVal block As Blocks, ByVal g As Graphics) as objekt
      9. Select Case block
      10. Case Blocks.Gras
      11. rec = New Rectangle(CInt(X * 30) - 1, CInt(Y * 30) - 1, 30, 30)
      12. brush = Brushes.GreenYellow
      13. ReDim Preserve recGras(recGras.Length)
      14. recGras(recGras.Length - 1) = rec
      15. Case Blocks.Water
      16. rec = New Rectangle(CInt(X * 30) - 1, CInt(Y * 30) - 1, 30, 30)
      17. brush = Brushes.Blue
      18. ReDim Preserve recWater(recWater.Length)
      19. recWater(recWater.Length - 1) = rec
      20. Case Blocks.Oil
      21. rec = New Rectangle(CInt(X * 30) - 1, CInt(Y * 30) - 1, 30, 30)
      22. brush = Brushes.Black
      23. ReDim Preserve recOil(recOil.Length)
      24. recOil(recOil.Length - 1) = rec
      25. Case Blocks.Tree
      26. rec = New Rectangle(CInt(X * 30) - 1, CInt(Y * 30) - 1, 30, 30)
      27. brush = Brushes.ForestGreen
      28. ReDim Preserve recTree(recTree.Length)
      29. recTree(recTree.Length - 1) = rec
      30. End Select
      31. g.FillRectangle(brush, rec)
      32. End Function
      33. Public Enum Blocks
      34. Water
      35. Oil
      36. Gras
      37. Tree
      38. End Enum
      39. Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
      40. CreateBlock(0, 1, Blocks.Water, e.Graphics)
      41. CreateBlock(1, 1, Blocks.Gras, e.Graphics)
      42. CreateBlock(2, 1, Blocks.Oil, e.Graphics)
      43. CreateBlock(3, 1, Blocks.Tree, e.Graphics)
      44. End Sub
      45. Private Sub Test_MouseClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseClick
      46. For Each rect As Rectangle In recGras
      47. If rect.Contains(e.Location) Then
      48. MessageBox.Show("Gras")
      49. End If
      50. Next
      51. For Each rect As Rectangle In recOil
      52. If rect.Contains(e.Location) Then
      53. MessageBox.Show("Oil")
      54. End If
      55. Next
      56. For Each rect As Rectangle In recWater
      57. If rect.Contains(e.Location) Then
      58. MessageBox.Show("Water")
      59. End If
      60. Next
      61. For Each rect As Rectangle In recTree
      62. If rect.Contains(e.Location) Then
      63. MessageBox.Show("Tree")
      64. End If
      65. Next
      66. End Sub
      67. End Class


      Edit:
      Anstelle von Array ist es sicher besser mit list(of rectangle) zu arbeiten denn fällt auch das redim weg :)

      VB.NET-Quellcode

      1. Private recGras As New List(Of Rectangle)
      2. recGras.Add(rec)
      There is no CLOUD - just other people's computers

      Q: Why do JAVA developers wear glasses?
      A: Because they can't C#

      Daily prayer:
      "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Schamash“ ()

      Ok, Vielen Vielen Dank!!!
      aber ich bin immer noch ein Noob darin, Und ich hab in letzter
      Zeit mehr mit C# gearbeitet, aber wie kann ich denn dieses Feld bei jedem
      Klick von button1 aka: Neues Terrain erneut aufrufen?

      Weil das Problem ist ja, das das Spiel bei mir so aufgebaut ist:


      Durch einen Button wird die Funktion generate aufgerufen.
      dort wird per zufal jeder picturebox ein bild zugewiesen. Die Pictureboxen sind wie folgt benannt
      s1_1, s1_2, s1_3 ...
      s2_1, s2_2 ...
      ...

      Und dazu schreibt er in ein array die jeweilige art als nummer, also city = 1, city stufe 2 = 2 usw...
      und das macht er in dem er einfach von links nach rechts durchnumerriert.

      Und wenn jetzt ein Feld geklickt wir. Dann checkt er die Position und welche nr dieses feld hat
      also welches bild. D.h. also das z.B. s1_1 = 0 ist und 2_2 = 10

      Und dann verändert er bild und nummer...

      U ich versteh noch nicht wie ich das mit euren methoden bisher so machen will wäre also sehr lieb wenn mir das nochmal wer erklärt :D :(.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcel1997“ ()

      Lass das mit den durch nummerierten Pictureboxen.
      Benutze die Methode, die ich oben schon genannt habe.
      Zeichne (bzw. lade aus deinen ressourcen) jeden block in einem Raster.
      Block[0, 0] hat zB. den wert "0" (Für BlockID Erde).
      Dann lese in einer Schleife immer den feld wert aus, und zeichne dann das Image zu der BlockID.
      Bis halt jedes Feld durchlaufen wurde.