2012-03-28 8 views
2

Ich wurde beauftragt, ein grundlegendes Pegz-Spiel in C# als eine Aufgabe für die Schule zu machen. Die Regeln finden Sie hier: http://tinyurl.com/6wro5xc. Ich bin nicht auf der Suche nach einem Schritt für Schritt, wie man das Spiel baut, sondern nur, wie man anfängt. Ich bin ziemlich neu in der C# -Anwendung Entwicklung, aber habe einen Hintergrund in C# Web-Entwicklung.Pegz Spiel C# - Hilfe Erste Schritte

Bisher habe ich ein Layout-Panel für die Flusskontrolle mit einem 5x5-Raster aus regulären Panels darin. In jedem regulären Panel habe ich ein Bildfeld mit dem Bild des Pegs. Alle Anzeigen sind voll, bis eine leer bleibt. Siehe angehängtes Bild für ein Beispiel. Um den Überblick über das 5x5-Raster der Panels zu behalten, dachte ich, ich würde ein BitArray mit zwei Dimensionen verwenden, das die Koordinaten des Panels im Raster halten würde, und wäre wahr, wenn ein Peg vorhanden ist oder falsch, wenn dies nicht der Fall ist.

Meine erste Frage wäre, wie gehe ich über das Gitter an das Array zu binden. Mit anderen Worten: Woher sollte ich wissen, dass [0] [0] des Arrays die obere linke Seite des Gitters darstellen würde? Ich habe den folgenden Konstruktor für das Array BitArray[,] board = new BitArray[5,5]; Ich weiß, dass ich zuerst durch das Array zyklisch durchlaufen und alle bis auf einen der Werte auf true zuweisen muss, aber dann muss ich diese Daten im Array nehmen und es auf das Grid anwenden . Das Konzept, wie dieses Array an das Raster gebunden wird, ist der Teil, an dem ich festhalte.

Ich schätze jede Hilfe.

enter image description here

+1

Vielleicht würde es helfen, wenn Sie es selbst ausprobiert haben, und wenn Sie Probleme haben, posten Sie die spezifischen Probleme. –

+0

Ich würde es versuchen, das Problem, das ich habe, ist sogar das Konzept, wie ich jedes Panel an die richtige Stelle im Array binden würde. Hier ist das Array, das ich konstruiert: BitArray [,] board = new BitArray [5, 5] ;. – Will

+0

Dann umformulieren Sie die Frage genauer. –

Antwort

2

Es gibt zweifellos bessere Ideen als diese, aber dennoch ist hier etwas für den Anfang ...

Statt eine Reihe von Bits zu machen, eine Anordnung einer Klasse machen Sie erstellen zu Stellen Sie einen Punkt dar, der auch Methoden zum Setzen/Deaktivieren des Punktes enthält. Dann könnten Sie etwas wie MyGrid [x] [y] .Set(); tun.

Sie könnten auch untersuchen, Sammlungen statt Arrays zu verwenden. Ich benutze selten Arrays für irgendetwas mehr außer Low-Level- oder Legacy-Operationen, die sie erfordern.

+0

Danke für den Tipp, ich werde mich darum kümmern. – Will

0

Verwendung Dyanmic-Arrays sind viel schneller als MultiDimensional-Arrays. Verwenden Sie letztere jedoch, wenn es einfacher ist und Sie die Werte kennen. Angenommen, Sie kennen die Werte der einzelnen Integer in der Box, sieht es so aus, als hätten Sie ein [5] [5] zweidimensionales Array. Mit .NET und C++ irgendwo gut wäre, um zu starten:

#include <iostream> 
#include <vector> 

using namespace std; 

int main() 
{ 

vector <int> DynArrNums(25); 

DynArrNums[0] = //Put any value here which you know for the rules of your game as a number; 
    DynArrNums[1] = 1001; 
    DynArrNums[2] = 1002;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[3] = 1003;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[4] = 1004;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[5] = 1005;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[6] = 1006;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[7] = 1007;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[8] = 1008;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[9] = 1009;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[10] = 1010;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[11] = 1011;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[12] = 1012;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[13] = 1013;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[14] = 1014;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[15] = 1015;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[16] = 1016;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[17] = 1017;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[18] = 1018;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[19] = 1019;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[20] = 1020;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[21] = 1021;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[22] = 1022;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[23] = 1023;//Put any value here which you know for the rules of your game as a number; 
    DynArrNums[24] = 1024;//Put any value here which you know for the rules of your game as a number; 

    cout << "Enter another number for the array" << endl; 
    int AnotherNum = 0; 
    cin >> AnotherNum; 
    DynArrNums.push_back(AnotherNum); 

    cout << "Number of integers in array: " << DynArrNums.size() << endl; 
    cout << "Last element in array: "; 
    cout << DynArrNums[DynArrNums.size() - 1] << endl; 

return 0; 
} 

Denken Sie daran, das erste Array als 0 gespeichert ist, weshalb die minus 1 am Ende benötigt wird. Ich habe es gerade versucht und es funktioniert :)

Allerdings muss das dynamische Array nicht unbedingt Ihre fehlende Ganzzahl wissen, ist das mittlere Feld im Array, es muss nur wissen, dass Sie eine weitere hinzufügen. Natürlich macht es das für Ihr Spiel anpassbar und Sie können jeden Wert setzen. In diesem Fall fügt es es bis zum Ende hinzu und Sie können einen beliebigen Wert durch seine Sequenz im Array aufrufen.

Um die Nummer [0] zu finden, ist das erste Panel [1] das nächste Panel. [6] wäre also das 1. Panel von Zeile zwei [11] wäre das erste in Zeile 3 und so weiter.

Schließlich bedeutet das DynArrNums [25] nicht, dass Sie 25 Felder ausgefüllt haben. Es bedeutet nur, dass es 25 Boxen in Ihrem Panel gibt und der Code weiß, dass sie fehlen, weshalb sie am Ende danach gefragt werden.

Viel Glück.