[Source]4-Gewinnt

11/03/2013 16:01 DeinMud#1
Hab ein kleines 4-Gewinnt Spiel gemacht mit Gdi+. (in VB.net)
Schicke euch den Source per Anfrage (PN).

Download
[Only registered and activated users can see links. Click Here To Register...]



Virustotal:
[Only registered and activated users can see links. Click Here To Register...]

Code:
Public Class Form1
    Private gamePoints As New Point(50, 50)
    Private WithEvents Spielfeld As New Spielfeld(gamePoints.X, gamePoints.Y) With {.Width = gamePoints.X * 12, .Height = gamePoints.Y * 12}
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.DoubleBuffered = True
        Me.SetStyle(ControlStyles.UserPaint, True)
        Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        Me.Controls.Add(Spielfeld)
    End Sub
    Private Sub Spielfeld_MouseDown(sender As Object, e As MouseEventArgs) Handles Spielfeld.MouseDown
        Label1.Text = String.Format("{0} ist an der Reihe", Spielfeld.nextPlayer.ToString)
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If Not MessageBox.Show("Möchtest du ein neues Spiel starten?", "Neustart", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
            Exit Sub
        End If
        Spielfeld.restart()
        Label1.Text = String.Format("{0} ist an der Reihe", Spielfeld.nextPlayer.ToString)
    End Sub
End Class
Public Class Spielfeld
    Inherits Control
    Enum Playermove
        Spieler1 = -1
        Spieler2 = 0
    End Enum
    Private _nextPlayer As Playermove = Playermove.Spieler1
    Public ReadOnly Property nextPlayer As Playermove
        Get
            Return _nextPlayer
        End Get
    End Property
    Public Property _width As Integer
    Public Property _height As Integer
    Public Sub New(width As Integer, height As Integer)
        Me._width = width
        Me._height = height
    End Sub
    Private startBlocks As New List(Of Rectangle)
    Private Sub DrawField(e As PaintEventArgs)
        startBlocks.RemoveRange(0, startBlocks.Count)
        With e.Graphics
            For wid = 0 To _width * 6 Step _width
                For hei = 0 To _height * 7 Step _height
                    startBlocks.Add(New Rectangle(wid, hei, _width, _height))
                    .FillEllipse(Brushes.WhiteSmoke, startBlocks(startBlocks.Count - 1))
                Next
            Next
        End With
    End Sub
    Private playedBlocks As New List(Of Rectangle)
    Private blackblockCoords As New List(Of Point)
    Private redblockCoords As New List(Of Point)
    Private animation As New Timer With {.Interval = 75}
    Private moreBlock As Integer
    Private newRec As Rectangle
    Private firstBlock As Rectangle
    Private Sub ClickDrawingField(e As MouseEventArgs)
        If Not e.Button = MouseButtons.Left OrElse falling OrElse Not playedBlocks.Where(Function(item) item.Contains(e.Location)).Count = 0 Then
            Return
        End If
        Dim clickedblocks = startBlocks.Where(Function(item) item.Contains(e.Location) AndAlso playedBlocks.Where(Function(items) items.IntersectsWith(item)).Count = 0)
        If clickedblocks.Count = 0 Then
            Return
        End If
        firstBlock = clickedblocks.First
        moreBlock = _height * 7 - playedBlocks.Where(Function(item) item.Location.X = firstBlock.X).Count * _height
        newRec = New Rectangle(firstBlock.X, firstBlock.Y, firstBlock.Width, firstBlock.Height)
        falling = True
        _nextPlayer = Not _nextPlayer
        playedBlocks.Add(newRec)
        AddHandler animation.Tick, AddressOf animation_Tick
        animation.Start()
        Me.Invalidate()
    End Sub
    Private Sub LookForWin()
        If Not Math.IEEERemainder(playedBlocks.Count, 2) = 0 Then
            blackblockCoords.Add(newRec.Location)
            If blackblockCoords.Contains(New Point(newRec.X, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X, newRec.Y + (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X, newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y - (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y - (_height * 3))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y - (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y - (_height * 3))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y + (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y + (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y - (_height * 2))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y - (_height * 2))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y + (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y + (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf playedBlocks.Count = 8 * 7 Then
                MessageBox.Show("Kein Gewinner!")
            Else
                Exit Sub
            End If
        Else
            redblockCoords.Add(newRec.Location)
            If redblockCoords.Contains(New Point(newRec.X, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X, newRec.Y + (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X, newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y - (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y - (_height * 3))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y - (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y - (_height * 3))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y + (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y + (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y - (_height * 2))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y - (_height * 2))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y + (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y + (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf playedBlocks.Count = 8 * 7 Then
                MessageBox.Show("Kein Gewinner!")
            Else
                Exit Sub
            End If
        End If
        Me.restart()
    End Sub
    Private Sub DrawStones(e As PaintEventArgs)
        With e.Graphics
            For i = 0 To playedBlocks.Count - 1
                If Math.IEEERemainder(i, 2) = 0 Then
                    .DrawEllipse(Pens.Black, playedBlocks(i))
                    .FillEllipse(Brushes.Black, playedBlocks(i))
                Else
                    .FillEllipse(Brushes.Red, playedBlocks(i))
                    .DrawEllipse(Pens.Red, playedBlocks(i))
                End If
            Next
        End With
    End Sub
    Private Sub Spielfeld_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown
        ClickDrawingField(e)
    End Sub
    Private Sub Spielfeld_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
        Me.DoubleBuffered = True
        DrawField(e)
        DrawStones(e)
    End Sub
    Public Sub restart()
        playedBlocks.RemoveRange(0, playedBlocks.Count)
        redblockCoords.RemoveRange(0, redblockCoords.Count)
        blackblockCoords.RemoveRange(0, blackblockCoords.Count)
        _nextPlayer = Playermove.Spieler2
        Me.Invalidate()
    End Sub
    Private falling As Boolean = False
    Private Sub animation_Tick(sender As Object, e As EventArgs)
        If newRec.Y = moreBlock Then
            RemoveHandler animation.Tick, AddressOf animation_Tick
            animation.Stop()
            falling = False
            LookForWin()
            Return
        End If
        newRec.Y += _height
        playedBlocks.Add(newRec)
        playedBlocks.RemoveAt(playedBlocks.Count - 2)
        Me.Invalidate()
    End Sub
End Class
11/03/2013 16:32 Skriptum#2
Quote:
Originally Posted by DeinMud View Post
Hab ein kleines 4-Gewinnt Spiel gemacht mit Gdi+. (in C#)
Schicke euch den Source per Anfrage.

Download
[Only registered and activated users can see links. Click Here To Register...]
Bitte mach noch einen Virustotal Link von der Exe Datei in deinen Post.
11/03/2013 16:39 DeinMud#3
Ich kann euch die Source auch so geben, wer die .exe nicht runterladen will, aber nagut:
Virustotal

[Only registered and activated users can see links. Click Here To Register...]
11/03/2013 18:20 Acin™#4
Warum stellst du die nicht einfach in den thread rein?
11/03/2013 18:47 ​Tension#5
Quote:
Originally Posted by -Rainbow View Post
Warum stellst du die nicht einfach in den thread rein?
^this

So Geheim kann dadran ja nichts sein, ist ja nur ein 4-Gewinnt Spiel.
Und wo Source drauf steht muss auch Source drin sein.
11/03/2013 19:07 xXKonaXx#6
Entschuldigung, aber wenn das nicht [Only registered and activated users can see links. Click Here To Register...] rein gehört, dann versteh ich die Welt nicht mehr.
11/03/2013 19:22 DeinMud#7
weil der Startpost dann so lang wäre, deswegen dacht ich, dass leute die's interessiert mich einfach anschreiben könnten. Hat wohl weniger mit Geheimhaltung zu tun, denn das kann man eh decompilen.

@xXKonaXx
Wenn lausige Acc Creator Bots & dergleichen einen eigenen Thread kriegen,
dann wohl auch sowas.
Hier die Source:

Code:
Public Class Form1
    Private gamePoints As New Point(50, 50)
    Private WithEvents Spielfeld As New Spielfeld(gamePoints.X, gamePoints.Y) With {.Width = gamePoints.X * 12, .Height = gamePoints.Y * 12}
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.DoubleBuffered = True
        Me.SetStyle(ControlStyles.UserPaint, True)
        Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        Me.Controls.Add(Spielfeld)
    End Sub
    Private Sub Spielfeld_MouseDown(sender As Object, e As MouseEventArgs) Handles Spielfeld.MouseDown
        Label1.Text = String.Format("{0} ist an der Reihe", Spielfeld.nextPlayer.ToString)
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If Not MessageBox.Show("Möchtest du ein neues Spiel starten?", "Neustart", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
            Exit Sub
        End If
        Spielfeld.restart()
        Label1.Text = String.Format("{0} ist an der Reihe", Spielfeld.nextPlayer.ToString)
    End Sub
End Class
Public Class Spielfeld
    Inherits Control
    Enum Playermove
        Spieler1 = -1
        Spieler2 = 0
    End Enum
    Private _nextPlayer As Playermove = Playermove.Spieler1
    Public ReadOnly Property nextPlayer As Playermove
        Get
            Return _nextPlayer
        End Get
    End Property
    Public Property _width As Integer
    Public Property _height As Integer
    Public Sub New(width As Integer, height As Integer)
        Me._width = width
        Me._height = height
    End Sub
    Private startBlocks As New List(Of Rectangle)
    Private Sub DrawField(e As PaintEventArgs)
        startBlocks.RemoveRange(0, startBlocks.Count)
        With e.Graphics
            For wid = 0 To _width * 6 Step _width
                For hei = 0 To _height * 7 Step _height
                    startBlocks.Add(New Rectangle(wid, hei, _width, _height))
                    .FillEllipse(Brushes.WhiteSmoke, startBlocks(startBlocks.Count - 1))
                Next
            Next
        End With
    End Sub
    Private playedBlocks As New List(Of Rectangle)
    Private blackblockCoords As New List(Of Point)
    Private redblockCoords As New List(Of Point)
    Private animation As New Timer With {.Interval = 75}
    Private moreBlock As Integer
    Private newRec As Rectangle
    Private firstBlock As Rectangle
    Private Sub ClickDrawingField(e As MouseEventArgs)
        If Not e.Button = MouseButtons.Left OrElse falling OrElse Not playedBlocks.Where(Function(item) item.Contains(e.Location)).Count = 0 Then
            Return
        End If
        Dim clickedblocks = startBlocks.Where(Function(item) item.Contains(e.Location) AndAlso playedBlocks.Where(Function(items) items.IntersectsWith(item)).Count = 0)
        If clickedblocks.Count = 0 Then
            Return
        End If
        firstBlock = clickedblocks.First
        moreBlock = _height * 7 - playedBlocks.Where(Function(item) item.Location.X = firstBlock.X).Count * _height
        newRec = New Rectangle(firstBlock.X, firstBlock.Y, firstBlock.Width, firstBlock.Height)
        falling = True
        _nextPlayer = Not _nextPlayer
        playedBlocks.Add(newRec)
        AddHandler animation.Tick, AddressOf animation_Tick
        animation.Start()
        Me.Invalidate()
    End Sub
    Private Sub LookForWin()
        If Not Math.IEEERemainder(playedBlocks.Count, 2) = 0 Then
            blackblockCoords.Add(newRec.Location)
            If blackblockCoords.Contains(New Point(newRec.X, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X, newRec.Y + (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X, newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y - (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y - (_height * 3))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y - (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y - (_height * 3))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y + (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y + (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y - (_height * 2))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y - (_height * 2))) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y + (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf blackblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y + (_height * 2))) AndAlso blackblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso blackblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) Then
                MessageBox.Show("Spieler 1 gewinnt")
            ElseIf playedBlocks.Count = 8 * 7 Then
                MessageBox.Show("Kein Gewinner!")
            Else
                Exit Sub
            End If
        Else
            redblockCoords.Add(newRec.Location)
            If redblockCoords.Contains(New Point(newRec.X, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X, newRec.Y + (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X, newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y - (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y - (_height * 3))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y - (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y - (_height * 3))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y + (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 3), newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y + (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 3), newRec.Y + (_height * 3))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) AndAlso redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y - (_height * 2))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) AndAlso redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y - (_height * 2))) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X - (_width * 2), newRec.Y + (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y - _height)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf redblockCoords.Contains(New Point(newRec.X + (_width * 2), newRec.Y + (_height * 2))) AndAlso redblockCoords.Contains(New Point(newRec.X + _width, newRec.Y + _height)) AndAlso redblockCoords.Contains(New Point(newRec.X - _width, newRec.Y - _height)) Then
                MessageBox.Show("Spieler 2 gewinnt")
            ElseIf playedBlocks.Count = 8 * 7 Then
                MessageBox.Show("Kein Gewinner!")
            Else
                Exit Sub
            End If
        End If
        Me.restart()
    End Sub
    Private Sub DrawStones(e As PaintEventArgs)
        With e.Graphics
            For i = 0 To playedBlocks.Count - 1
                If Math.IEEERemainder(i, 2) = 0 Then
                    .DrawEllipse(Pens.Black, playedBlocks(i))
                    .FillEllipse(Brushes.Black, playedBlocks(i))
                Else
                    .FillEllipse(Brushes.Red, playedBlocks(i))
                    .DrawEllipse(Pens.Red, playedBlocks(i))
                End If
            Next
        End With
    End Sub
    Private Sub Spielfeld_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown
        ClickDrawingField(e)
    End Sub
    Private Sub Spielfeld_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
        Me.DoubleBuffered = True
        DrawField(e)
        DrawStones(e)
    End Sub
    Public Sub restart()
        playedBlocks.RemoveRange(0, playedBlocks.Count)
        redblockCoords.RemoveRange(0, redblockCoords.Count)
        blackblockCoords.RemoveRange(0, blackblockCoords.Count)
        _nextPlayer = Playermove.Spieler2
        Me.Invalidate()
    End Sub
    Private falling As Boolean = False
    Private Sub animation_Tick(sender As Object, e As EventArgs)
        If newRec.Y = moreBlock Then
            RemoveHandler animation.Tick, AddressOf animation_Tick
            animation.Stop()
            falling = False
            LookForWin()
            Return
        End If
        newRec.Y += _height
        playedBlocks.Add(newRec)
        playedBlocks.RemoveAt(playedBlocks.Count - 2)
        Me.Invalidate()
    End Sub
End Class
Ihr könnt jedoch nicht im Designer das Spielfeld bearbeiten bzw eins auf die Form ziehen da der Konstruktor parameter erwartet.
11/04/2013 07:19 Acin™#8
Quote:
Originally Posted by DeinMud View Post
weil der Startpost dann so lang wäre
[*SPOILER] DEIN TEXT IM SPOILER [*/SPOILER] (Ohne die Sternchen in den tags)
11/06/2013 00:23 MrSm!th#9
Quote:
Wenn lausige Acc Creator Bots & dergleichen einen eigenen Thread kriegen
Wäre mir neu.