Halli Hallo,
ich muss für die Schule einen Würfel programmieren, (wie bei dem Spiel „Nikitin“ mit den Tangram-Würfeln).
Der Würfel hat auf 4 Seiten eine Farbe und auf den anderen 2 Seiten zwei Farben. Nun muss ich diesen Würfel grafisch darstellen und anhand von Buttons soll der Spieler ihn dann drehen (im und gegen den Uhrzeigersinn) und kippen (vorne,hinten, rechts, links) können.
Das Darstellen des Würfels habe ich schon hinbekommen, aber wenn ich dann auf einen Button klicke, kommt eine Fehlermeldung.
Ich bin noch ziemlich neu auf diesem Gebiet, und brauche daher bitte bitte Hilfe.
Mein bisheriger Code ist folgender:
Stein.cpp
//---------------------------------------------------------------------------
#pragma hdrstop
#include „Stein.h“
//---------------------------------------------------------------------------
#pragma package(smart_init)
void Stein::FarbenAuslesen(string Farben[6])
{
for (int iKante=0;iKanteimgWuerfel->Canvas->Brush->Color=Farbe; //Farbe auswählen
TPoint Punkt[3]; //anlegen eines Arrays, vom Datentyp Punkt
Form1->imgWuerfel->Canvas->:stuck_out_tongue_winking_eye:en->Color=Farbe; //Farbauswahl für den Konturenstift, da man sonst „immer“ Dreiecke sehen würde
switch(iKante)
{
case 0: Punkt[0].x=80;
Punkt[0].y=70;
Punkt[1].x=30;
Punkt[1].y=110;
Punkt[2].x=180;
Punkt[2].y=110;
break;
case 1: Punkt[0].x=30;
Punkt[0].y=110;
Punkt[1].x=180;
Punkt[1].y=110;
Punkt[2].x=230;
Punkt[2].y=70;
break;
case 2: Punkt[0].x=30;
Punkt[0].y=110;
Punkt[1].x=80;
Punkt[1].y=70;
Punkt[2].x=230;
Punkt[2].y=70;
break;
case 3: Punkt[0].x=80;
Punkt[0].y=70;
Punkt[1].x=230;
Punkt[1].y=70;
Punkt[2].x=180;
Punkt[2].y=110;
break;
}
Form1->imgWuerfel->Canvas->:stuck_out_tongue_winking_eye:olygon(Punkt,2); //2 Dreiecke werden gezeichnet
}
if (iSeite==1) //rechte Seite
{ Form1->imgWuerfel->Canvas->Brush->Color=Farbe;
TPoint Punkt[3];
Form1->imgWuerfel->Canvas->:stuck_out_tongue_winking_eye:en->Color=Farbe;
switch(iKante)
{
case 0: Punkt[0].x=180;
Punkt[0].y=110;
Punkt[1].x=230;
Punkt[1].y=70;
Punkt[2].x=230;
Punkt[2].y=220;
break;
case 1: Punkt[0].x=180;
Punkt[0].y=110;
Punkt[1].x=180;
Punkt[1].y=160;
Punkt[2].x=230;
Punkt[2].y=220;
break;
case 2: Punkt[0].x=230;
Punkt[0].y=70;
Punkt[1].x=180;
Punkt[1].y=110;
Punkt[2].x=180;
Punkt[2].y=260;
break;
case 3: Punkt[0].x=230;
Punkt[0].y=70;
Punkt[1].x=230;
Punkt[1].y=220;
Punkt[2].x=180;
Punkt[2].y=260;
break;
}
Form1->imgWuerfel->Canvas->:stuck_out_tongue_winking_eye:olygon(Punkt,2); //2 Dreiecke werden gezeichnet
}
if (iSeite==3) //vordere Seite
{ Form1->imgWuerfel->Canvas->Brush->Color=Farbe;
TPoint Punkt[3];
Form1->imgWuerfel->Canvas->:stuck_out_tongue_winking_eye:en->Color=Farbe;
switch (iKante)
{
case 0: //Dreieck 1
Punkt[0].x=30;
Punkt[0].y=110;
Punkt[1].x=180;
Punkt[1].y=110;
Punkt[2].x=180;
Punkt[2].y=260;
break;
case 1: //Dreieck 2
Punkt[0].x=30;
Punkt[0].y=110;
Punkt[1].x=30;
Punkt[1].y=260;
Punkt[2].x=180;
Punkt[2].y=260;
break;
case 2: //Dreieck 3
Punkt[0].x=30;
Punkt[0].y=260;
Punkt[1].x=30;
Punkt[1].y=110;
Punkt[2].x=180;
Punkt[2].y=110;
break;
case 3: //Dreieck 4
Punkt[0].x=30;
Punkt[0].y=260;
Punkt[1].x=180;
Punkt[1].y=260;
Punkt[2].x=180;
Punkt[2].y=110;
break;
}
Form1->imgWuerfel->Canvas->:stuck_out_tongue_winking_eye:olygon(Punkt,2); //2 Dreiecke werden gezeichnet
}
}
}
//Würfel-Konturen, Forderseite
Form1->imgWuerfel->Canvas->:stuck_out_tongue_winking_eye:en->Width=2; //Stiftdicke
Form1->imgWuerfel->Canvas->:stuck_out_tongue_winking_eye:en->Color=clBlack; //Farbauswahl
Form1->imgWuerfel->Canvas->Rectangle(30,110,180,260); //Vorderseite/Rechteck wird gezeichnet
//Würfel-Konturen, 3-D-Optik
Form1->imgWuerfel->Canvas->MoveTo(30,110);
Form1->imgWuerfel->Canvas->LineTo(80,70);
Form1->imgWuerfel->Canvas->LineTo(230,70);
Form1->imgWuerfel->Canvas->LineTo(180,110);
Form1->imgWuerfel->Canvas->MoveTo(180,260);
Form1->imgWuerfel->Canvas->LineTo(230,220);
Form1->imgWuerfel->Canvas->LineTo(230,70);
}
//-------------------------------------------------
und noch die Main.cpp
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include „Main.h“
#include"Wuerfel.h"
#include"Stein.h"
#include
#include
#include
#include
using namespace std;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource „*.dfm“
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Wuerfel Zeichnen;
Zeichnen.WuerfelZeichnen();
//Stein Wuerfel;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cmdUntenClick(TObject *Sender)
{
Stein Bewegung;
//Wuerfel Zeichnen;
Bewegung.KippeUnten();
//Zeichnen.WuerfelZeichnen();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cmdLinksClick(TObject *Sender)
{
Stein Bewegung;
//Wuerfel Zeichnen;
Bewegung.KippeLinks();
//Zeichnen.WuerfelZeichnen();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cmdObenClick(TObject *Sender)
{
Stein Bewegung;
//Wuerfel Zeichnen;
Bewegung.KippeOben();
//Zeichnen.WuerfelZeichnen();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cmdRechtsClick(TObject *Sender)
{
Stein Bewegung;
//Wuerfel Zeichnen;
Bewegung.KippeRechts();
//Zeichnen.WuerfelZeichnen();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cmdDreheMitUhrClick(TObject *Sender)
{
Stein Bewegung;
//Wuerfel Zeichnen;
Bewegung.DreheMitUhr();
//Zeichnen.WuerfelZeichnen();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cmdDreheGegenUhrClick(TObject *Sender)
{
Stein Bewegung;
//Wuerfel Zeichnen;
Bewegung.DreheGegenUhr();
//Zeichnen.WuerfelZeichnen();
}
//--------------------------------------------------
Vielen Dank schon mal für eure Hilfe!
Liebe Grüße
Mandy