15er Puzzle in Windows Forms (Visual Studio 2008)

Diskutiere 15er Puzzle in Windows Forms (Visual Studio 2008) im Developer Network Forum im Bereich Hardware & Software Forum; Hallo an alle, ich komme wieder bei euch, weil ich grade Hilfe brauche. Ich habe vor kurz mit VS 2008 angefangen und ich wollte damit üben, aber...
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #1
MMOHM

MMOHM

Bekanntes Mitglied
Dabei seit
14.03.2007
Beiträge
151
Reaktionspunkte
0
Hallo an alle, ich komme wieder bei euch, weil ich grade Hilfe brauche.
Ich habe vor kurz mit VS 2008 angefangen und ich wollte damit üben, aber mein Problem ist das ich es noch nicht so gut behersche. Ich kann schon einiges aber leider nicht zu viel.

Ich versuche ein Spiel zu machen, es nicht natürlicher weise nichts originales, aber es ist ein gute anfang für eine schwerere Thema.
Ihr kennt bestimmt den 15er Puzzle.
Hier ein Bild davon:

15_spi10.jpg

So soll es ungefähr aussehen.

So weit sehr schön, aber jetzt kommen die Probleme......



Erstens:
Wie soll ich den Randomizer aufbauen?

Möglichekeiten:
- Die Zahlen in ein Random aufzubauen (Will das nicht so leicht haben);
- Oder die Buttons sollen nach zufalls Prinzip funktionieren ( Wäre für mich eine gute Herausforderung, wenn ich es verstehen würde wie)

Problem:

- Bei ein zufall Prinzip werden die Buttons gemischt und die Zahlen werden dadurch gemischt, aber wenn ich die Buttons mischen will, wie mache ich es das die sie sich nicht über einander lappen?



Zweitens:
Wie Kann ich die Buttons in bewegung setzten?

Möglichkeiten:
- Per Mouse click;
- Drag and Drop System ( Hin und her ziehen);
- Per Tastatur (W,A,S,D oder per Pfeilen);

Problem:
- Wie kann ich die Buttons bewegen so das die sich nicht über einander lappen?
- Wie kann ich es machen das die Grenzen(der Unterpanel) nicht überschritten wird?
- Bei Pfeil oder Maus click, wie kann man die Rände der Buttons oder Pannel eingehalten?

Ich denke, dass die sind die bisherige Probleme die ich habe xD



Ich möchte euch bitten das ihr nicht so hart mit mir umgeht, da ich immer noch ein Anfänger bin. Und bitte lasst die böse Google kommentare , wenn ich was genaueres gefunden hätte, wäre ich nicht hier.
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #2
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Ich würde da spontan folgendes machen:
Ein 4x4-Array, in dem an jeder Stelle steht, welche Element-Nummer dort gerade ist. Die Buttons würde ich fürs erste gar nicht verschieben, sondern 16 Buttons machen, bei denen die Text-Eigenschaft anhand der zugehörigen Element-Nummer eingestellt wird und das freie Feld per Visible-Eigenschaft ausgeblendet wird. Zum bewegen siehst du beim Click-Ereignis des Buttons im Array nach, ob eine der vier Nachbar-Stellen frei ist, und tauschst den Wert mit dem Array-Element, das dem angeklickten Button entspricht.
Danach beschriftet eine Funktion der Einfachheit wieder alle Buttons mit den Werten aus dem Array und blendet den freien Button aus.
Diese Lösung erspart dir das Herumrechnen mit den Button-Positionen.
Für den Randomizer ist die wichtigste Eigenschaft, dass sein Ergebnis auch lösbar sein muss. Ich würde da einfach vom geordneten Feld ausgehen, und in einer Schleife z.B. 50x eine Vertauschung durchführen, bei dem zufällig eines der vier beweglichen Elemente mit dem leeren Feld getauscht wird.

Ein paar Überprüfungen für die Sonderfälle an den Rändern wirst du auch noch brauchen.
 
Zuletzt bearbeitet:
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #3
MMOHM

MMOHM

Bekanntes Mitglied
Dabei seit
14.03.2007
Beiträge
151
Reaktionspunkte
0
Danke, das ist schon mal ein gute Antwort ^^
Theoretisch weiss ich auch wie ich das aufbauen muss, aber das Praktische macht mir grade Probleme xD

Hier ist mal eine leere Quellcode, hab schon selbst daran gebastelt aber ich bekomme immer fehlern und deswegen werde ich ein leeres eintragen, so das ihr auch mit probier könnt.

Code:
#pragma once


namespace My15erPuzzle {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Zusammenfassung für Form1
	///
	/// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch
	///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,
	///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.
	///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
	///          arbeiten, die diesem Formular zugewiesen sind.
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Konstruktorcode hier hinzufügen.
			//
		}

	protected:
		/// <summary>
		/// Verwendete Ressourcen bereinigen.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Panel^  panel1;
	private: System::Windows::Forms::Button^  btn1;
	private: System::Windows::Forms::Button^  btn2;
	private: System::Windows::Forms::Button^  btn3;
	private: System::Windows::Forms::Button^  btn4;
	private: System::Windows::Forms::Button^  btn5;
	private: System::Windows::Forms::Button^  btn6;
	private: System::Windows::Forms::Button^  btn7;
	private: System::Windows::Forms::Button^  btn8;
	private: System::Windows::Forms::Button^  btn9;
	private: System::Windows::Forms::Button^  btn10;
	private: System::Windows::Forms::Button^  btn11;
	private: System::Windows::Forms::Button^  btn12;
	private: System::Windows::Forms::Button^  btn13;
	private: System::Windows::Forms::Button^  btn14;
	private: System::Windows::Forms::Button^  btn15;
	private: System::Windows::Forms::Button^  btnReset;
	private: System::Windows::Forms::Button^  btnStart;

	private: System::ComponentModel::IContainer^  components;



	protected: 

	private:
		/// <summary>
		/// Erforderliche Designervariable.
		/// </summary>


#pragma region Windows Form Designer generated code
		/// <summary>
		/// Erforderliche Methode für die Designerunterstützung.
		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
		/// </summary>
		void InitializeComponent(void)
		{
			this->panel1 = (gcnew System::Windows::Forms::Panel());
			this->btn1 = (gcnew System::Windows::Forms::Button());
			this->btn2 = (gcnew System::Windows::Forms::Button());
			this->btn15 = (gcnew System::Windows::Forms::Button());
			this->btn3 = (gcnew System::Windows::Forms::Button());
			this->btn14 = (gcnew System::Windows::Forms::Button());
			this->btn4 = (gcnew System::Windows::Forms::Button());
			this->btn13 = (gcnew System::Windows::Forms::Button());
			this->btn12 = (gcnew System::Windows::Forms::Button());
			this->btn5 = (gcnew System::Windows::Forms::Button());
			this->btn6 = (gcnew System::Windows::Forms::Button());
			this->btn11 = (gcnew System::Windows::Forms::Button());
			this->btn7 = (gcnew System::Windows::Forms::Button());
			this->btn10 = (gcnew System::Windows::Forms::Button());
			this->btn8 = (gcnew System::Windows::Forms::Button());
			this->btn9 = (gcnew System::Windows::Forms::Button());
			this->btnReset = (gcnew System::Windows::Forms::Button());
			this->btnStart = (gcnew System::Windows::Forms::Button());
			this->panel1->SuspendLayout();
			this->SuspendLayout();
			// 
			// panel1
			// 
			this->panel1->BackColor = System::Drawing::Color::Cornsilk;
			this->panel1->Controls->Add(this->btn1);
			this->panel1->Controls->Add(this->btn2);
			this->panel1->Controls->Add(this->btn15);
			this->panel1->Controls->Add(this->btn3);
			this->panel1->Controls->Add(this->btn14);
			this->panel1->Controls->Add(this->btn4);
			this->panel1->Controls->Add(this->btn13);
			this->panel1->Controls->Add(this->btn12);
			this->panel1->Controls->Add(this->btn5);
			this->panel1->Controls->Add(this->btn6);
			this->panel1->Controls->Add(this->btn11);
			this->panel1->Controls->Add(this->btn7);
			this->panel1->Controls->Add(this->btn10);
			this->panel1->Controls->Add(this->btn8);
			this->panel1->Controls->Add(this->btn9);
			this->panel1->Location = System::Drawing::Point(196, 68);
			this->panel1->Name = L"panel1";
			this->panel1->Size = System::Drawing::Size(413, 413);
			this->panel1->TabIndex = 0;
			// 
			// btn1
			// 
			this->btn1->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn1->Location = System::Drawing::Point(0, 0);
			this->btn1->Name = L"btn1";
			this->btn1->Size = System::Drawing::Size(104, 104);
			this->btn1->TabIndex = 0;
			this->btn1->Text = L"1";
			this->btn1->UseVisualStyleBackColor = true;
			
			// 
			// btn2
			// 
			this->btn2->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn2->Location = System::Drawing::Point(103, 0);
			this->btn2->Name = L"btn2";
			this->btn2->Size = System::Drawing::Size(104, 104);
			this->btn2->TabIndex = 1;
			this->btn2->Text = L"2";
			this->btn2->UseVisualStyleBackColor = true;
			// 
			// btn15
			// 
			this->btn15->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn15->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn15->Location = System::Drawing::Point(206, 309);
			this->btn15->Name = L"btn15";
			this->btn15->Size = System::Drawing::Size(104, 104);
			this->btn15->TabIndex = 14;
			this->btn15->Text = L"15";
			this->btn15->UseVisualStyleBackColor = true;
			// 
			// btn3
			// 
			this->btn3->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn3->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn3->Location = System::Drawing::Point(206, 0);
			this->btn3->Name = L"btn3";
			this->btn3->Size = System::Drawing::Size(104, 104);
			this->btn3->TabIndex = 2;
			this->btn3->Text = L"3";
			this->btn3->UseVisualStyleBackColor = true;
			// 
			// btn14
			// 
			this->btn14->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn14->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn14->Location = System::Drawing::Point(103, 309);
			this->btn14->Name = L"btn14";
			this->btn14->Size = System::Drawing::Size(104, 104);
			this->btn14->TabIndex = 13;
			this->btn14->Text = L"14";
			this->btn14->UseVisualStyleBackColor = true;
			
			// 
			// btn4
			// 
			this->btn4->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn4->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn4->Location = System::Drawing::Point(309, 0);
			this->btn4->Name = L"btn4";
			this->btn4->Size = System::Drawing::Size(104, 104);
			this->btn4->TabIndex = 3;
			this->btn4->Text = L"4";
			this->btn4->UseVisualStyleBackColor = true;
			// 
			// btn13
			// 
			this->btn13->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn13->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn13->Location = System::Drawing::Point(0, 309);
			this->btn13->Name = L"btn13";
			this->btn13->Size = System::Drawing::Size(104, 104);
			this->btn13->TabIndex = 12;
			this->btn13->Text = L"13";
			this->btn13->UseVisualStyleBackColor = true;
			// 
			// btn12
			// 
			this->btn12->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn12->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn12->Location = System::Drawing::Point(309, 206);
			this->btn12->Name = L"btn12";
			this->btn12->Size = System::Drawing::Size(104, 104);
			this->btn12->TabIndex = 11;
			this->btn12->Text = L"12";
			this->btn12->UseVisualStyleBackColor = true;
			// 
			// btn5
			// 
			this->btn5->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn5->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn5->Location = System::Drawing::Point(0, 103);
			this->btn5->Name = L"btn5";
			this->btn5->Size = System::Drawing::Size(104, 104);
			this->btn5->TabIndex = 4;
			this->btn5->Text = L"5";
			this->btn5->UseVisualStyleBackColor = true;
			// 
			// btn6
			// 
			this->btn6->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn6->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn6->Location = System::Drawing::Point(103, 103);
			this->btn6->Name = L"btn6";
			this->btn6->Size = System::Drawing::Size(104, 104);
			this->btn6->TabIndex = 5;
			this->btn6->Text = L"6";
			this->btn6->UseVisualStyleBackColor = true;
			// 
			// btn11
			// 
			this->btn11->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn11->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn11->Location = System::Drawing::Point(206, 206);
			this->btn11->Name = L"btn11";
			this->btn11->Size = System::Drawing::Size(104, 104);
			this->btn11->TabIndex = 10;
			this->btn11->Text = L"11";
			this->btn11->UseVisualStyleBackColor = true;
			// 
			// btn7
			// 
			this->btn7->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn7->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn7->Location = System::Drawing::Point(206, 103);
			this->btn7->Name = L"btn7";
			this->btn7->Size = System::Drawing::Size(104, 104);
			this->btn7->TabIndex = 6;
			this->btn7->Text = L"7";
			this->btn7->UseVisualStyleBackColor = true;
			// 
			// btn10
			// 
			this->btn10->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn10->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn10->Location = System::Drawing::Point(103, 206);
			this->btn10->Name = L"btn10";
			this->btn10->Size = System::Drawing::Size(104, 104);
			this->btn10->TabIndex = 9;
			this->btn10->Text = L"10";
			this->btn10->UseVisualStyleBackColor = true;
			// 
			// btn8
			// 
			this->btn8->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn8->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn8->Location = System::Drawing::Point(309, 103);
			this->btn8->Name = L"btn8";
			this->btn8->Size = System::Drawing::Size(104, 104);
			this->btn8->TabIndex = 7;
			this->btn8->Text = L"8";
			this->btn8->UseVisualStyleBackColor = true;
			// 
			// btn9
			// 
			this->btn9->Anchor = System::Windows::Forms::AnchorStyles::None;
			this->btn9->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 20, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btn9->Location = System::Drawing::Point(0, 206);
			this->btn9->Name = L"btn9";
			this->btn9->Size = System::Drawing::Size(104, 104);
			this->btn9->TabIndex = 8;
			this->btn9->Text = L"9";
			this->btn9->UseVisualStyleBackColor = true;
			// 
			// btnReset
			// 
			this->btnReset->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 8.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btnReset->Location = System::Drawing::Point(684, 95);
			this->btnReset->Name = L"btnReset";
			this->btnReset->Size = System::Drawing::Size(74, 74);
			this->btnReset->TabIndex = 15;
			this->btnReset->Text = L"Reset";
			this->btnReset->UseVisualStyleBackColor = true;
			// 
			// btnStart
			// 
			this->btnStart->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 8.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 
				static_cast<System::Byte>(0)));
			this->btnStart->Location = System::Drawing::Point(684, 12);
			this->btnStart->Name = L"btnStart";
			this->btnStart->Size = System::Drawing::Size(74, 74);
			this->btnStart->TabIndex = 16;
			this->btnStart->Text = L"Start";
			this->btnStart->UseVisualStyleBackColor = true;
		
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(777, 527);
			this->Controls->Add(this->btnStart);
			this->Controls->Add(this->btnReset);
			this->Controls->Add(this->panel1);
			this->Name = L"Form1";
			this->Text = L"Form1";
			this->panel1->ResumeLayout(false);
			this->ResumeLayout(false);

		}
#pragma endregion



};
}


Wie ich schon sagte bin noch ein Anfänger ,deswegen brauche ich ein kleinen Schubsa ... xD

Ich werde auf jeden fall noch dein Antwort bedenken, ich will nicht so schnell aufgeben xD

Apropo , der 16er Button... Ja ich habe auch daran so gedacht, aber ich denke das es ist dann zu leicht, man kann denn noch unsichtbar machen, obwohl er ein Funktion hat.
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #4
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Noch ein kleiner Tip, der das Leben sehr vereinfacht: Statt das Rad für jeden Button neu zu erfinden, könntest Du ein 4x4-Array mit den Buttons anlegen. Mit 2 verschachtelten Schleifen hast Du dann mit wenigen Zeilen alle Deine Buttons erzeugt.

Soll das ein Verschiebe-Puzzle werden? Das Bild ist leider nicht zu sehen.
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #5
MMOHM

MMOHM

Bekanntes Mitglied
Dabei seit
14.03.2007
Beiträge
151
Reaktionspunkte
0
Soll das ein Verschiebe-Puzzle werden? Das Bild ist leider nicht zu sehen.

Yop
Kennste denn 15er Spiel nicht?
Soll nur nach 3 Prinzipen laufen : Drag and Drop, Click, WASD
Ich würde lieber Drag and Drop haben, aber ich kann mir nicht vorstellen das der VS 2008 so etwas unterstützt.
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #6
peterfido

peterfido

Bekanntes Mitglied
Dabei seit
16.02.2000
Beiträge
1.785
Reaktionspunkte
0
Ort
Berlin
Doch, unterstützt er. Jedoch macht das nicht viel Sinn. Es gibt nur 1 Lücke. Also wird der, der angeklickt wird, wenn er direkt neben der Lücke ist, in diese geschoben. Statt Buttons würde ich aber Bilder nehmen.. So kann man ein großes in 16 Teile teilen und auf die Bilder verteilen. Dann muss das Bild wieder richtig zusammengesetzt werden. Sowas habe ich vor ein paar Jahren mal in VB6 programmiert. Dauerte grad mal nen Nachmittag. Ich habe statt der Maus lieber die Pfeiltasten genutzt.
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #7
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Yop
Kennste denn 15er Spiel nicht?
Soll nur nach 3 Prinzipen laufen : Drag and Drop, Click, WASD
Ich würde lieber Drag and Drop haben, aber ich kann mir nicht vorstellen das der VS 2008 so etwas unterstützt.
Fang erstmal mit Click an ;-)
D&D ist selbstverständlich auch machbar. Ist nur ein bisschen Programmierarbeit. Das hat allerdings weniger was mit VS zu tun. VS ist nur ein Hilfsmittel.
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #8
MMOHM

MMOHM

Bekanntes Mitglied
Dabei seit
14.03.2007
Beiträge
151
Reaktionspunkte
0
Doch, unterstützt er. Jedoch macht das nicht viel Sinn. Es gibt nur 1 Lücke. Also wird der, der angeklickt wird, wenn er direkt neben der Lücke ist, in diese geschoben. Statt Buttons würde ich aber Bilder nehmen.. So kann man ein großes in 16 Teile teilen und auf die Bilder verteilen. Dann muss das Bild wieder richtig zusammengesetzt werden. Sowas habe ich vor ein paar Jahren mal in VB6 programmiert. Dauerte grad mal nen Nachmittag. Ich habe statt der Maus lieber die Pfeiltasten genutzt.


Ja Bilder kann ich auch später einsetzten, zuerst möchte ich das mit Zahlen machen. Wenn ich das mit Zahlen hinbekomme dann werde ich rest auch hinbekommen ^^
Ja das sehe ich das viele wollen das mir mit dem 4x4 Arrays erklären, ja es ist eine sehr gute Lösung
Mein Problem ist immernoch, das ich mit programmierung von Arrays in VS nicht gearbeitet habe xD

Ich kapiere es sehr schnell, aber zuerst muss ich mal ein Formel dafür sehen, nur ne kurze Code wie man das anstellt und das kann schon Wunder wirken.

Ich will nicht das mir irgenteiner alles einbaut, will einfach das Programm verstehen. Und das kann ich machen indem ich die Codes selbst einbaue und bearbeite.

Geil das du es so schnell hinbekommst, weil ich sitze schon seit 3 Tage drauf xD


Fang erstmal mit Click an ;-)
D&D ist selbstverständlich auch machbar. Ist nur ein bisschen Programmierarbeit. Das hat allerdings weniger was mit VS zu tun. VS ist nur ein Hilfsmittel.

Hmm ich weiss das man so etwas lieber in Java, Silverright usw machen kann, aber hab mir vorgestellt das so etwas auch in VS möglich ist. Ja die Bindung won Tasten kann ich schon, ist nicht schwerr.
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #9
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Hmm ich weiss das man so etwas lieber in Java, Silverright usw machen kann, aber hab mir vorgestellt das so etwas auch in VS möglich ist. Ja die Bindung won Tasten kann ich schon, ist nicht schwerr.
In welcher Sprache bzw. mit welchem Framework Du das machst, ist vollkommen egal.

Nur zur Klarstellung:
VS 2008 ist nur eine Entwicklungsumgebung, die es erlaubt, Code für verschiedene Programmiersprachen recht komfortabel zu entwickeln. Du hast Dich für C++ entschieden.
C++ in Verbindung mit dem .NET-Framework ist vielleicht nicht die beste Wahl, da dafür C++ an einigen Stellen von Microsoft "erweitert" wurde. Ein Beispiel dafür ist der operator gcnew und das ^, die beide so nicht im "richtigen" C++ existieren. Die für .NET am besten geeignete Sprache dürfte C# sein (Visual C# 2008).
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #10
T

TrµMAn

Bekanntes Mitglied
Dabei seit
23.10.2006
Beiträge
4.882
Reaktionspunkte
2
Ort
Wuppertal
Die für .NET am besten geeignete Sprache dürfte C# sein (Visual C# 2008).

jepp ... wenn ich mit meiner "haupt"-Aufgabe im Praktikum fertig bin (ASP Seite mit C# optimieren) fang ich mal damit an wenn sonst keiner mehr ne aufgabe für mich hat ^^
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #11
MMOHM

MMOHM

Bekanntes Mitglied
Dabei seit
14.03.2007
Beiträge
151
Reaktionspunkte
0
Hmm ich kann leider bis jetzt nur C++ und TP
Sorry ^^

Ich bin nicht der großer Programmiere und ich versuche alles selbst zu machen. Werde natürlicherweise auch versuchen andere Sprachen zu lernen, aber solange ich das nicht behersche, habe ich nicht vor was anderes zu lernen.
Wie schon sagte kann einiges, aber leider das ist immernoch zu wenig, sagen wir so, ich kenne vieleicht 40% von was ihr als Bassiswissen nennt ^^
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #12
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Ich bin nicht der großer Programmiere und ich versuche alles selbst zu machen. Werde natürlicherweise auch versuchen andere Sprachen zu lernen, aber solange ich das nicht behersche, habe ich nicht vor was anderes zu lernen.
Das ist sehr lobenswert. Eine der wichtigsten Eigenschaften, die ein Programmierer haben muß, ist, an einer Sache dranzubleiben ;-)

Das Problem, das ich bei der Verbindung von C++ und .NET sehe, ist, daß Du Dir da einen C++-Dialekt aneignest, der sonst zu nichts zu gebrauchen ist. C# ist für diese Aufgabe wesentlich eleganter und auch nicht schwerer zu erlernen als C++. Im Gegenteil.

Da ich mit dieser speziellen C++Variante bisher noch nicht viel zu tun hatte, hier ein paar Zeilen in C# für Dein Puzzle. Damit werden die Buttons in einem Array angelegt und mit wenigen Zeilen richtig positioniert. Sieht dann aus wie in Deinem Screenshot.
Code:
        const int fieldSize = 64;
        
        Button[,] buttons = new Button[4, 4];
Code:
            InitializeComponent();

            for (int x = 0; x < 4; x++)
            {
                for (int y = 0; y < 4; y++)
                {
                    Button b = new Button();
                    b.Location = new Point(x * fieldSize, y * fieldSize);
                    b.Size = new Size(fieldSize, fieldSize);
                    b.Text = "" + (y * 4 + x + 1);

                    this.Controls.Add(b);

                    this.buttons[x, y] = b;
                }
            }
In C++ dürfte es ähnlich aussehen. Hier im Forum findet sich sicherlich jemand, der das in die C++Syntax umsetzt.
 
  • 15er Puzzle in Windows Forms (Visual Studio 2008) Beitrag #13
MMOHM

MMOHM

Bekanntes Mitglied
Dabei seit
14.03.2007
Beiträge
151
Reaktionspunkte
0
Danke für das Kompliment ^^
Ja wie ich schon sagte, wollte zuerst das in C++ machen ^^

Danke für das Code, der kommt mir irgentwie bekannt vor, ich meine von Aufbau her. Leider brauche ich immernoch ein Übersetzter. Ich werde mich diese Wochenende um dieses Programm intensiver kümmern, da ich leider die letzte Tagen kein Zeit hatte.

Wer noch Tipps oder Vorschläge hat, bitte hier eintragen ^^
 
Thema:

15er Puzzle in Windows Forms (Visual Studio 2008)

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben