Welches Visual Studio forms Objekt für GameOfLife in CSharp?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Am optimalsten, da mEn erheblich effizienter als z.B. das von xGlumi vorgeschlagene GridView bzw. ListView wäre eine PictureBox (Ja, eine PictureBox).

Das ganze könntest du z.B. auf diese Weise implementieren:

using System.Drawing;
using System.Windows.Forms;

namespace GameOfLife{
    class GameWindow : Form{
        private bool[,] field;
        private PictureBox fieldView;
        private int cellSize;

        private Brush aliveBrush = new SolidBrush(Color.Green);
        private Brush deadBrush = new SolidBrush(Color.Gray);
        private Pen gridPen = new Pen(Color.Black);

        public MainClass(Size fieldSize, int cellSize) {
            this.cellSize = cellSize;
            
            FormBorderStyle = FormBorderStyle.Fixed3D;
            MaximizeBox = false;
            ClientSize = new Size(fieldSize.Width * cellSize, fieldSize.Height * cellSize);
            
            field = new bool[fieldSize.Width, fieldSize.Height];
            
            fieldView = new PictureBox();
            fieldView.Size = ClientSize;
            fieldView.Image = new Bitmap(fieldView.Size.Width,fieldView.Size.Height);
            fieldView.MouseClick+= FieldView_MouseClick;
            Controls.Add(fieldView);
            
            DrawField();
        }

        private void DrawField() {
            using(Graphics g = Graphics.FromImage(fieldView.Image)) {
                for(int x = 0; x < field.GetLength(0); ++x) {
                    for(int y = 0; y < field.GetLength(1); ++y) {
                        g.FillRectangle(field[x,y]?aliveBrush:deadBrush,x*cellSize,y*cellSize,cellSize,cellSize);
                    }
                }
                for(int x = 0; x < field.GetLength(0); ++x) {
                    g.DrawLine(gridPen, x * cellSize, 0, x * cellSize, field.GetLength(1) * cellSize);
                }
                for(int y = 0; y < field.GetLength(1); ++y) {
                    g.DrawLine(gridPen, 0, y*cellSize, field.GetLength(0) * cellSize,y*cellSize);
                }
            }
            fieldView.Invalidate();
        }

        private void FieldView_MouseClick(object sender, MouseEventArgs e) {
            int x = e.X / cellSize;
            int y = e.Y / cellSize;
            field[x, y] = !field[x, y];
            DrawField();
        }
    }
}

Dann z.B. noch nen Timer dabei und in dessen Tick-Event die Variable field mit der nächsten Generation befüllen und die Methode DrawField aufrufen, Fertig.

Ggf. kannst du den Timer z.B. über nen Tastendruck steuern, um das Feld erstmal vorzubereiten und dann den Ablauf zu starten.

Woher ich das weiß: eigene Erfahrung

Evt. ein GridView bzw. eine ListView (Mit eingeschalteter "Details"-Eigenschaft)

MFG xGlumi

Danke schaue ich mir an.

0

Kann man 2D-Spiele mit Windows Visual Studio 2013 produzieren, braucht man zusätzliche Programme?

Hallo liebe Community, Newbie incoming (=

Ich möchte Spiele programmieren für Windows, muss kein 3D sein oder derartiges ein einfaches point&klick-Adventure würde mir erstmal reichen, vlt auch mal ein 2D Jump 'n Run ferner (=

Ich besitze folgende Eingabegeräte: Optische Maus, Tastatur und ein Grafiktablett.

Mein System: i7-4770, 16Gb RAM (Dual Channel), Nvidia GeForce GTX 660 OC, SSD als Laufwerk C, Windows 8.1 Pro

Folgende Programme habe ich: Adobe Master Collection CC im Abonnement, Blender, Cubase 7

Ich habe ein bisschen gesucht und leider oft nur veraltete Beiträge gefunden. Ich möchte erstmal einfache, jedoch ansehnbare Spiele programmieren und möchte wissen, ob das mit dem oben genanntem Programm mir möglich ist.

Auch als Einsteiger möchte ich ein gutes Programm und bin gewillt mich einzuarbeiten auch wenn es mühsam/kostenspielig seien sollte =D

Die einzige Programmiersprache die ich z.Z. beherrsche ist noch Pascal, aber das muss ja nicht so bleiben ;)

Ich möchte keine Literaturverweise oder Sonstiges (=

Ich weiß das man Apps mit dem Visual Studio programmieren kann, aber bekomme ich auch Spiele damit zustande? Muss ich das Programm mit anderen ergänzen um entwickeln zu können?

Ich freue mich auf eure Antworten :-)

...zur Frage

Was möchtest Du wissen?