C++ @ Visual Studio 08 - Super Mario?

cHaZsTaRRR

Cadet 4th Year
Registriert
Apr. 2009
Beiträge
118
hallo leute
ich bräuchte mal dringend eure hilfe
ich muss für die schule ein projekt programmieren und ich komm grade nich wirklich weiter und ich brauche euch anbei ein bild für bessere vorstellung


sda.jpg


so nun folgendes
die spielfigur mit dem mario bild wird per WASD bewegt welches per timern läuftjetzt mein erstes problem:
die buttons mit dme kleinen b drin, sollen gold münzen werden und eine textbox/listbox sollte immer den punktestand aktuell anzeigen, pro münze ein punkt....ich krieg das mit der kollisionsabfrage einfach nich hin

zweites problem:
gibt es eine möglichkeit in der rechten oberen ecke mario so zu programmieren, dass er nicht durch wände laufen kann, sondern die böden etc feste hindernisse sind?

das wärs erstmal
ich wär echt dankbar wenn mir jemand helfen könnte
 
Zuletzt bearbeitet:
hier is das bild, sry voll vergessen

sda.jpg

den link schau ich mir mal durch
 
Wieso machst du die Goldmünzen als Buttons und nicht als Picturebox oder so? (wär zumindest leichter die münze zu integrieren denk ich mal ;))
Dann kannst du einfach die Position von Mario abfragen un die Position der Münze.

if(marioPosX_links == MünzePosX_rechts || marioPosX_rechts == MünzePosX_links)
{
dann die Picturebox verstecken und punkte +1
}

"links" und "rechts" beziehen sich auf die "Ecken" die Figur hat ja eine bestimmte Breite.


Mag sein dass das ziemlich nooblike ist aber das wäre meine Idee.
Genauso kannst du die Wände abfragen.
Angenommen die Positionen sind gleich dann soll die Figur stehenbleiben.
Angenommen du läufst über einen abhang einfach PosY abfragen und die Figur soweit runterfallen lassen bis PosY wieder eine Wand ist.
 
Zuletzt bearbeitet:
mit picturebox hab ich noch keine erfahrung, da wir das noch nicht hatten
ich geb euch mal den kompletten quelltext....vilt könnt ihr mir dann anhand des codes helfen :)
Code:
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Konstruktorcode hier hinzufügen.
			//
			zae_punkte = 0;
			x1 = 0;
			x2 = 0;
			x3 = 0;
			x4 = 0;
			x5 = 0;
			x6 = 0;
			x7 = 0;
			x8 = 0;
			x9 = 0;
		}

	protected:
		
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}

	private: int zae_punkte;
	private: int x1, x2, x3, x4, x5, x6, x7, x8, x9;

			}
#pragma endregion
	private: System::Void button26_Click(System::Object^  sender, System::EventArgs^  e) {
					 }
private: System::Void button15_Click(System::Object^  sender, System::EventArgs^  e) {
				 }
private: System::Void Form1_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
			 if(e -> KeyCode == Keys::W)
			 {tim_bewegung_oben -> Enabled = 1;}		 
			 if(e -> KeyCode == Keys::A)
			 {tim_bewegung_links -> Enabled = 1;}
			 if(e -> KeyCode == Keys::S)
			 {tim_bewegung_unten -> Enabled = 1;}
			 if(e -> KeyCode == Keys::D)
			 {tim_bewegung_rechts -> Enabled = 1;}
					 }
private: System::Void tim_bewegung_links_Tick(System::Object^  sender, System::EventArgs^  e) {
					 btnspieler -> Left--;
					 if(btnspieler->Left >= button21->Right
						 && btnspieler->Bottom == button21->Bottom)
					 {
						 x1++;
					 }		
					 
					 }
private: System::Void tim_bewegung_rechts_Tick(System::Object^  sender, System::EventArgs^  e) {
					 btnspieler -> Left++;
					 if(btnspieler->Left >= button21->Right
						 && btnspieler->Bottom == button21->Bottom)
					 {
						 x1++;
					 }		
					 
					}
private: System::Void tim_bewegung_oben_Tick(System::Object^  sender, System::EventArgs^  e) {
					 btnspieler -> Top--;
					 if(btnspieler->Left >= button21->Right
						 && btnspieler->Bottom == button21->Bottom)
					 {
						 x1++;
					 }		
					 
					 }
private: System::Void tim_bewegung_unten_Tick(System::Object^  sender, System::EventArgs^  e) {
					 btnspieler -> Top++;
					 if(btnspieler->Left >= button21->Right
						 && btnspieler->Bottom == button21->Bottom)
					 {
						 x1++;
					 }		
					 
					 }
private: System::Void Form1_KeyUp(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
			 if(e -> KeyCode == Keys::W)
			 tim_bewegung_oben -> Enabled = 0;

			 if(e -> KeyCode == Keys::A)
			 tim_bewegung_links -> Enabled = 0;

			 if(e -> KeyCode == Keys::S)
			 tim_bewegung_unten -> Enabled = 0;

			 if(e -> KeyCode == Keys::D)
			 tim_bewegung_rechts -> Enabled = 0;
				 
}
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
				 }
private: System::Void btnstart_Click(System::Object^  sender, System::EventArgs^  e) {
						
					
				 
				 }
private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
						if (x1 = 1)
							zae_punkte++;
				 }
private: System::Void btnspieler_Click(System::Object^  sender, System::EventArgs^  e) {
					 /*if(btnspieler->Left >= button21->Right
						 && btnspieler->Bottom == button21->Bottom)
					 {
						 zae_punkte++;

					 }		
					 
					 if(btnspieler->Left >= button22->Right
						 && btnspieler->Top == button22->Top)
					 {
						 zae_punkte++;
					 }*/
					 
				 }
private: System::Void button25_Click(System::Object^  sender, System::EventArgs^  e) {
				 }
private: System::Void listBox1_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e) {
				 }
private: System::Void tbx_punkte_TextChanged(System::Object^  sender, System::EventArgs^  e) {
				 }
private: System::Void btn_punkte_Click(System::Object^  sender, System::EventArgs^  e) {
					 lbx_punkte->Items->Add(Convert::ToString(zae_punkte));
				 }
};
}
 
Naja es ist aus Prinzip schonmal schlecht für alles einen extra Timer zu haben.
 
Zurück
Oben