Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo Leute

es geht noch mal um mein Pong-Spiel.

Also: Wenn ich das Spiel starte, dann soll der Radiobutton 640 * 480 markiert sein andererseits soll man aber die Spielfeldgröße ändern können und dann der jeweilig ausgewählte Radiobutton markiert sein. Mein Problem ist, das ich das beides für sich gesehen hinbekomme, aber nicht beides zusammen.

In dieser Methode oder auch Funktion läuft alles zusammen, das heißt hier werden die Änderungen für das Spielfeld ausgeführt. Sie ist in meiner Hauptforma (Form1) zu finden.


private: System::Void spielfeldToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) 

		 {

			 Point neueGroesse;


			 // bitte jeweils in einer Zeile eingeben


			 einstellungenDialog4 ^neueWerte = gcnew einstellungenDialog4(this->Width, this->Height, this->rahmenFarbe,this->malen);


			 // wenn der Dialog über OK beendet wird


			 if (neueWerte -> ShowDialog() == Windows::Forms::DialogResult::OK)

			 {

				 // die neue Größe holen


				 neueGroesse = neueWerte -> liefereWert();

				 spielfeld->BackColor = neueWerte->liefereBackColor();

				 rahmenFarbe = neueWerte->liefereRahmenColor();


				 // den Dialog wieder schließen


				 neueWerte -> Close();


				 // das Formular ändern


				 this -> Width = neueGroesse.X;

				 this -> Height = neueGroesse.Y;


				 // neu ausrichten


				 // bitte jeweils in einer Zeile eingeben


				 this -> Left = (Screen::PrimaryScreen -> Bounds.Width - this -> Width) / 2;

				 this -> Top = (Screen::PrimaryScreen -> Bounds.Height - this -> Height) / 2;


				 // die Zeichenfläche neu beschaffen


				 zeichenflaeche = spielfeld -> CreateGraphics();


				 // das Spielfeld neu setzen


				 setzeSpielfeld();


				 // Spielfeld löschen


				 zeichenflaeche -> Clear(spielfeld -> BackColor);


				 zeichneSpielfeld();

				 zeichnePunkte("0");

				 zeichneZeit("0");


				 // und einen neuen Ball und Schläger zeichnen


				 neuerBall();

			 }

		 };

};

}



Hier her werden alle Änderungen übergeben. Hier mal mein gesamter Code für die Einstellungen.

#pragma once


using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;



namespace Pong {


	/// <summary>

	/// Zusammenfassung für EinstellungDialog

	///

	/// 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 einstellungenDialog4 : public System::Windows::Forms::Form

	{

	public:

		einstellungenDialog4(Int32 breite, Int32 hoehe, Color rahmen, Color malen)

		{

			InitializeComponent();

			//

			//TODO: Konstruktorcode hier hinzufügen.

			//


			linie = 6;

			pinsel1 = gcnew SolidBrush(Color::White);

			malflaeche = panelVorschau->CreateGraphics();

			panelVorschau->BackColor = Color::Black;

			panelBallvorschau->BackColor = Color::White;

			panelSchlaegervorschau->BackColor = Color::White;

			rahmenFarbe = rahmen;


			setzeVorschau();



			//if(breite == 320 && hoehe == 200)

			//{

   //             radioButton320->Checked = true;

			//}

			//else if(breite == 640 && hoehe == 480)

			//{

   //             radioButton640->Checked = true;

			//}

			//else if(breite == 1024 && hoehe == 768)

			//{

   //             radioButton1024->Checked = true;

			//}

			//else  

			//{

   //             radioButtonMaximal->Checked = true;

			//}


		}


	protected:

		/// <summary>

		/// Verwendete Ressourcen bereinigen.

		/// </summary>

		~einstellungenDialog4()

		{

			if (components)

			{

				delete components;

			}

		}



	public:


		// die Methode liefert die ausgewählten Werte zurück


		Point liefereWert()

		{

			Point rueckgabe;


			if (radioButton320 -> Checked == true)


				rueckgabe = Point(320,200);


			if (radioButton640 -> Checked == true)


				rueckgabe = Point(640,480);


			if (radioButton1024 -> Checked == true)


				rueckgabe = Point(1024,760);


			if (radioButtonMaximal -> Checked == true)


				// bitte in einer Zeile eingeben


				rueckgabe = Point(Screen::PrimaryScreen -> Bounds.Width, Screen::PrimaryScreen -> Bounds.Height);


			return rueckgabe;

		}


		Void setzeVorschau()

		{

			vorschauGroesse = panelVorschau->ClientRectangle;


			vorschauMaxX = vorschauGroesse.Right - linie;

			vorschauMinX = vorschauGroesse.Left + linie + 1;

			vorschauMaxY = vorschauGroesse.Bottom - linie;

			vorschauMinY = vorschauGroesse.Top + linie;

		}


		Void maleVorschau()

		{		

			malflaeche->FillRectangle(pinsel1, 0, 0, vorschauMaxX, linie);

			malflaeche->FillRectangle(pinsel1, vorschauMaxX, 0, linie, vorschauMaxY + linie);

			malflaeche->FillRectangle(pinsel1, 0, vorschauMaxY, vorschauMaxX, linie);

			malflaeche->FillRectangle(pinsel1, 0,0, linie, vorschauMaxX);

		}


		Color liefereBackColor()

		{

			return colorDialog1->Color;

		}


		Color liefereRahmenColor()

		{

			return rahmenFarbe;

		}


	private:


		Graphics ^malflaeche;


		SolidBrush ^pinsel1;


		Rectangle vorschauGroesse;


		Int32 linie, vorschauMaxX, vorschauMaxY, vorschauMinX, vorschauMinY;


		Color rahmenFarbe;


		Color malen;


	private: System::Windows::Forms::GroupBox^  groupBox1;

	private: System::Windows::Forms::Button^  buttonUebernehmen;

	private: System::Windows::Forms::Button^  buttonAbbrechen;

	private: System::Windows::Forms::RadioButton^  radioButtonMaximal;

	private: System::Windows::Forms::RadioButton^  radioButton1024;

	private: System::Windows::Forms::RadioButton^  radioButton640;

	private: System::Windows::Forms::RadioButton^  radioButton320;

	private: System::Windows::Forms::GroupBox^  farbeinstellung;

	private: System::Windows::Forms::Label^  labelHintergrund;

	private: System::Windows::Forms::Button^  buttonRahmen;


	private: System::Windows::Forms::Button^  buttonHintergrund;

	private: System::Windows::Forms::Label^  labelRahmenfarbe;

	private: System::Windows::Forms::ColorDialog^  colorDialog1;

	private: System::Windows::Forms::Panel^  panelVorschau;

	private: System::Windows::Forms::Panel^  panelSchlaegervorschau;

	private: System::Windows::Forms::Panel^  panelBallvorschau;


	protected: 


	private:

		/// <summary>

		/// Erforderliche Designervariable.

		/// </summary>

		System::ComponentModel::Container ^components;


#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->groupBox1 = (gcnew System::Windows::Forms::GroupBox());

			this->radioButtonMaximal = (gcnew System::Windows::Forms::RadioButton());

			this->radioButton1024 = (gcnew System::Windows::Forms::RadioButton());

			this->radioButton640 = (gcnew System::Windows::Forms::RadioButton());

			this->radioButton320 = (gcnew System::Windows::Forms::RadioButton());

			this->buttonUebernehmen = (gcnew System::Windows::Forms::Button());

			this->buttonAbbrechen = (gcnew System::Windows::Forms::Button());

			this->farbeinstellung = (gcnew System::Windows::Forms::GroupBox());

			this->buttonRahmen = (gcnew System::Windows::Forms::Button());

			this->buttonHintergrund = (gcnew System::Windows::Forms::Button());

			this->labelRahmenfarbe = (gcnew System::Windows::Forms::Label());

			this->labelHintergrund = (gcnew System::Windows::Forms::Label());

			this->colorDialog1 = (gcnew System::Windows::Forms::ColorDialog());

			this->panelVorschau = (gcnew System::Windows::Forms::Panel());

			this->panelSchlaegervorschau = (gcnew System::Windows::Forms::Panel());

			this->panelBallvorschau = (gcnew System::Windows::Forms::Panel());

			this->groupBox1->SuspendLayout();

			this->farbeinstellung->SuspendLayout();

			this->panelVorschau->SuspendLayout();

			this->SuspendLayout();

			// 

			// groupBox1

			// 

			this->groupBox1->Controls->Add(this->radioButtonMaximal);

			this->groupBox1->Controls->Add(this->radioButton1024);

			this->groupBox1->Controls->Add(this->radioButton640);

			this->groupBox1->Controls->Add(this->radioButton320);

			this->groupBox1->Location = System::Drawing::Point(12, 12);

			this->groupBox1->Name = L"groupBox1";

			this->groupBox1->Size = System::Drawing::Size(323, 80);

			this->groupBox1->TabIndex = 0;

			this->groupBox1->TabStop = false;

			this->groupBox1->Text = L"Größe";

			// 

			// radioButtonMaximal

			// 

			this->radioButtonMaximal->AutoSize = true;

			this->radioButtonMaximal->Location = System::Drawing::Point(253, 32);

			this->radioButtonMaximal->Name = L"radioButtonMaximal";

			this->radioButtonMaximal->Size = System::Drawing::Size(63, 17);

			this->radioButtonMaximal->TabIndex = 3;

			this->radioButtonMaximal->TabStop = true;

			this->radioButtonMaximal->Text = L"Maximal";

			this->radioButtonMaximal->UseVisualStyleBackColor = true;

			// 

			// radioButton1024

			// 

			this->radioButton1024->AutoSize = true;

			this->radioButton1024->Location = System::Drawing::Point(170, 32);

			this->radioButton1024->Name = L"radioButton1024";

			this->radioButton1024->Size = System::Drawing::Size(77, 17);

			this->radioButton1024->TabIndex = 2;

			this->radioButton1024->Text = L"1024 * 768";

			this->radioButton1024->UseVisualStyleBackColor = true;

			// 

			// radioButton640

			// 

			this->radioButton640->AutoSize = true;

			this->radioButton640->Checked = true;

			this->radioButton640->Location = System::Drawing::Point(93, 32);

			this->radioButton640->Name = L"radioButton640";

			this->radioButton640->Size = System::Drawing::Size(71, 17);

			this->radioButton640->TabIndex = 1;

			this->radioButton640->TabStop = true;

			this->radioButton640->Text = L"640 * 480";

			this->radioButton640->UseVisualStyleBackColor = true;

			// 

			// radioButton320

			// 

			this->radioButton320->AutoSize = true;

			this->radioButton320->Location = System::Drawing::Point(16, 32);

			this->radioButton320->Name = L"radioButton320";

			this->radioButton320->Size = System::Drawing::Size(71, 17);

			this->radioButton320->TabIndex = 0;

			this->radioButton320->Text = L"320 * 200";

			this->radioButton320->UseVisualStyleBackColor = true;

			// 

			// buttonUebernehmen

			// 

			this->buttonUebernehmen->DialogResult = System::Windows::Forms::DialogResult::OK;

			this->buttonUebernehmen->Location = System::Drawing::Point(12, 330);

			this->buttonUebernehmen->Name = L"buttonUebernehmen";

			this->buttonUebernehmen->Size = System::Drawing::Size(75, 23);

			this->buttonUebernehmen->TabIndex = 1;

			this->buttonUebernehmen->Text = L"Übernehmen";

			this->buttonUebernehmen->UseVisualStyleBackColor = true;

			// 

			// buttonAbbrechen

			// 

			this->buttonAbbrechen->Location = System::Drawing::Point(260, 330);

			this->buttonAbbrechen->Name = L"buttonAbbrechen";

			this->buttonAbbrechen->Size = System::Drawing::Size(75, 23);

			this->buttonAbbrechen->TabIndex = 2;

			this->buttonAbbrechen->Text = L"Abbrechen";

			this->buttonAbbrechen->UseVisualStyleBackColor = true;

			this->buttonAbbrechen->Click += gcnew System::EventHandler(this, &einstellungenDialog4::buttonAbbrechen_Click);

			// 

			// farbeinstellung

			// 

			this->farbeinstellung->Controls->Add(this->buttonRahmen);

			this->farbeinstellung->Controls->Add(this->buttonHintergrund);

			this->farbeinstellung->Controls->Add(this->labelRahmenfarbe);

			this->farbeinstellung->Controls->Add(this->labelHintergrund);

			this->farbeinstellung->Location = System::Drawing::Point(12, 98);

			this->farbeinstellung->Name = L"farbeinstellung";

			this->farbeinstellung->Size = System::Drawing::Size(323, 94);

			this->farbeinstellung->TabIndex = 3;

			this->farbeinstellung->TabStop = false;

			this->farbeinstellung->Text = L"Farbeinstellung";

			// 

			// buttonRahmen

			// 

			this->buttonRahmen->Location = System::Drawing::Point(150, 57);

			this->buttonRahmen->Name = L"buttonRahmen";

			this->buttonRahmen->Size = System::Drawing::Size(25, 25);

			this->buttonRahmen->TabIndex = 3;

			this->buttonRahmen->Text = L". . .";

			this->buttonRahmen->UseVisualStyleBackColor = true;

			this->buttonRahmen->Click += gcnew System::EventHandler(this, &einstellungenDialog4::buttonRahmen_Click);

			// 

			// buttonHintergrund

			// 

			this->buttonHintergrund->Location = System::Drawing::Point(150, 22);

			this->buttonHintergrund->Name = L"buttonHintergrund";

			this->buttonHintergrund->Size = System::Drawing::Size(25, 25);

			this->buttonHintergrund->TabIndex = 2;

			this->buttonHintergrund->Text = L". . .";

			this->buttonHintergrund->UseVisualStyleBackColor = true;

			this->buttonHintergrund->Click += gcnew System::EventHandler(this, &einstellungenDialog4::buttonHintergrund_Click);

			// 

			// labelRahmenfarbe

			// 

			this->labelRahmenfarbe->AutoSize = true;

			this->labelRahmenfarbe->Location = System::Drawing::Point(13, 69);

			this->labelRahmenfarbe->Name = L"labelRahmenfarbe";

			this->labelRahmenfarbe->Size = System::Drawing::Size(71, 13);

			this->labelRahmenfarbe->TabIndex = 1;

			this->labelRahmenfarbe->Text = L"Rahmenfarbe";

			// 

			// labelHintergrund

			// 

			this->labelHintergrund->AutoSize = true;

			this->labelHintergrund->Location = System::Drawing::Point(13, 34);

			this->labelHintergrund->Name = L"labelHintergrund";

			this->labelHintergrund->Size = System::Drawing::Size(100, 13);

			this->labelHintergrund->TabIndex = 0;

			this->labelHintergrund->Text = L"Spielfeldhintergrund";

			// 

			// panelVorschau

			// 

			this->panelVorschau->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;

			this->panelVorschau->Controls->Add(this->panelSchlaegervorschau);

			this->panelVorschau->Controls->Add(this->panelBallvorschau);

			this->panelVorschau->Location = System::Drawing::Point(12, 198);

			this->panelVorschau->Name = L"panelVorschau";

			this->panelVorschau->Size = System::Drawing::Size(323, 124);

			this->panelVorschau->TabIndex = 4;

			this->panelVorschau->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &einstellungenDialog4::panelVorschau_Paint);

			// 

			// panelSchlaegervorschau

			// 

			this->panelSchlaegervorschau->Location = System::Drawing::Point(18, 35);

			this->panelSchlaegervorschau->Name = L"panelSchlaegervorschau";

			this->panelSchlaegervorschau->Size = System::Drawing::Size(6, 30);

			this->panelSchlaegervorschau->TabIndex = 1;

			// 

			// panelBallvorschau

			// 

			this->panelBallvorschau->Location = System::Drawing::Point(185, 58);

			this->panelBallvorschau->Name = L"panelBallvorschau";

			this->panelBallvorschau->Size = System::Drawing::Size(6, 6);

			this->panelBallvorschau->TabIndex = 0;

			// 

			// einstellungenDialog3

			// 

			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);

			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

			this->ClientSize = System::Drawing::Size(353, 365);

			this->Controls->Add(this->panelVorschau);

			this->Controls->Add(this->farbeinstellung);

			this->Controls->Add(this->buttonAbbrechen);

			this->Controls->Add(this->buttonUebernehmen);

			this->Controls->Add(this->groupBox1);

			this->Name = L"einstellungenDialog3";

			this->StartPosition = System::Windows::Forms::FormStartPosition::CenterParent;

			this->Text = L"Einstellungen";

			this->TopMost = true;

			this->groupBox1->ResumeLayout(false);

			this->groupBox1->PerformLayout();

			this->farbeinstellung->ResumeLayout(false);

			this->farbeinstellung->PerformLayout();

			this->panelVorschau->ResumeLayout(false);

			this->ResumeLayout(false);


		}

#pragma endregion

	private: System::Void buttonAbbrechen_Click(System::Object^  sender, System::EventArgs^  e) 

			 {

				 Close();

			 }



	private: System::Void panelVorschau_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e) 

			 {

				maleVorschau();

			 }

	private: System::Void buttonHintergrund_Click(System::Object^  sender, System::EventArgs^  e) 

		 {

			 if(colorDialog1->ShowDialog() == Windows::Forms::DialogResult::OK)

			 {

				 panelVorschau->BackColor = colorDialog1->Color;

			 }

		 }

	private: System::Void buttonRahmen_Click(System::Object^  sender, System::EventArgs^  e) 

		 {

			 ColorDialog ^cd = gcnew ColorDialog();


			 if(cd->ShowDialog() == Windows::Forms::DialogResult::OK)

			 {

				 rahmenFarbe = cd->Color;


				 pinsel1->Color = rahmenFarbe;

				 panelBallvorschau->BackColor = rahmenFarbe;

				 panelSchlaegervorschau->BackColor = rahmenFarbe;

				 maleVorschau();

		 }

			 }

};

}


Mein Problem: Mit dem auskommentierten Teil funktioniert zwar die Auswahl der Größe und es wird der richtige Radiobutton als vorausgewählt markiert, weil ich den ja in den Eigenschaften festgelegt habe, aber wenn ich dieses Formular noch einmal öffne, ist nicht der Radiobutton markiert, den man ausgewählt hat sondern immer noch der festgelegte Radiobutton 640 * 480. Ist der Code aber aktiv, dann wird mir zu Anfang der Maximal Radiobutten markiert und die Auswahl funktioniert. Das heißt es wird die Größe übernommen und auch der richtige Radiobutton beim wieder Öffnen des Einstellungendialogs.

Wie kann ich das hinbekommen, das trotzdem der Radiobutton 640 * 480 am Anfang markiert ist und nicht Maximal trotz des aktiven Codes, den ich jetzt erstmal auskommentiert habe?

Ach so: Es handelt sich um C++/Cli (Forms obwohl !!!!!)

Lieben Dank für Eure Hilfe

lempy

Hi lempy,

Ich hab's nur kurz überflogen: Du legst die Vorauswahl beim Erstellen des Forms fest - übergib doch die Vorauswahl als Parameter.

Und: Überleg Dir, ob Du das Objekt "Einstellungsdialog" nur nicht mehr anzeigst oder es zerstörst und jedes mal neu generierst.

Grüße

Sascha

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.