| |

VB.NET - Ein- und UmsteigerRe: Schiebespiel in Vb.Net | |  | Autor: Kuno60 | Datum: 06.09.14 17:27 |
| Hallo Rostrot,
hier eine grafische Lösung des kleinen Spielchens.
Dies ist ein Control, dass du auf eine Form ziehen kannst.
Im Designer kannst du in der Kategorie "Darstellung", folgendes Einstellen:
BackColor, ForeColor, Font, FelderX, FelderY, FeldGröße und FeldFarbe.
Das Spiel wird gestartet mit dem Aufruf von "Spielstart".
Wenn das Spiel gewonnen ist, wird das Gewonnen-Ereignis ausgelöst und die Anzahl der Verschiebungen übergeben.
Das ist VB12 Code (VS 2013, FW 4.5). Wenn du eine ältere Version benutzt, musst du den Code entsprechend anpassen.
Da der Code hier nicht komplett rein passt, kommt er in Teilen und ohne Kommentare.
Imports System.ComponentModel
Class SpielfeldControl
Inherits Control
Event Gewonnen(schritte As Integer)
Private Class Feld
Friend Sub New()
Belegt = True
End Sub
Friend Quadrat As Rectangle
Friend Index As Integer
Friend Nummer As Integer
Friend Belegt As Boolean
Friend Sub KopieIn(zf As Feld)
zf.Nummer = Nummer
zf.Belegt = True
Nummer = 0
Belegt = False
End Sub
End Class
Dim Felder() As Feld
Dim Quads() As Rectangle
Dim Gestartet As Boolean
Dim Zähler As Integer
Dim ÜberFeld As Feld
Dim AktFeld As Feld
Public Sub New()
SetStyle(ControlStyles.ResizeRedraw, True)
Me.DoubleBuffered = True
Me.ForeColor = Color.Black
Me.BackColor = Color.Gray
Me.Font = New Font(Me.Font.FontFamily, 20, FontStyle.Bold)
ErstelleSpielfeld()
End Sub
Private Sub ErstelleSpielfeld()
Gestartet = False
ReDim Felder(pFelderX * pFelderY - 1)
For i = 0 To Felder.Length - 1
Felder(i) = New Feld
Felder(i).Index = i
Felder(i).Nummer = i + 1
Felder(i).Quadrat = New Rectangle((i Mod pFelderX) * pFeldgröße, (i \ _
pFelderX) * pFeldgröße, pFeldgröße, pFeldgröße)
Next
Felder.Last.Belegt = False
Quads = Felder.Select(Function(x) x.Quadrat).ToArray
End Sub
Private Sub Größenanpassung()
If Me.IsHandleCreated Then
Me.Width = pFelderX * pFeldgröße + 1
Me.Height = pFelderY * pFeldgröße + 1
End If
End Sub
Protected Overrides Sub OnResize(e As EventArgs)
Größenanpassung()
End Sub
Dim pFelderX As Integer = 6
Dim pFelderY As Integer = 6
Dim pFeldgröße As Integer = 70
Dim pFeldFarbe As Color = Color.Silver
<Description("Anzahl der waagerechten Felder.")>
<Category("Darstellung"), DefaultValue(6)>
Property FelderX As Integer
Get
Return pFelderX
End Get
Set(value As Integer)
pFelderX = value
ErstelleSpielfeld()
Größenanpassung()
End Set
End Property
<Description("Anzahl der senkrechten Felder.")>
<Category("Darstellung"), DefaultValue(6)>
Property FelderY As Integer
Get
Return pFelderY
End Get
Set(value As Integer)
pFelderY = value
ErstelleSpielfeld()
Größenanpassung()
End Set
End Property
<Description("Die Größe eines Feldes in Pixel.")>
<Category("Darstellung"), DefaultValue(70)>
Property FeldGröße As Integer
Get
Return pFeldgröße
End Get
Set(value As Integer)
pFeldgröße = value
ErstelleSpielfeld()
Größenanpassung()
End Set
End Property
<Description("Die Farbe eines Feldes.")>
<Category("Darstellung")>
Property FeldFarbe As Color
Get
Return pFeldFarbe
End Get
Set(value As Color)
pFeldFarbe = value
Me.Refresh()
End Set
End Property
Sub Spielstart()
ErstelleSpielfeld()
Dim l = Felder.Length - 1
Dim fn = Enumerable.Range(1, l).ToArray
Dim zu = New Random
For i = 1 To 1000
Dim z1 = zu.Next(l)
Dim z2 = zu.Next(l)
Dim zw = fn(z1)
fn(z1) = fn(z2)
fn(z2) = zw
Next
For i = 0 To l - 1
Felder(i).Nummer = fn(i)
Next
Zähler = 0
Gestartet = True
Me.Refresh()
End Sub
End Class |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|