Dynamisches C++ Schulprojekt [Hilfe gesucht!]
-
Hallo C++ Community!
Ich bin Schüler auf einem Beruflichen-Gymnasium in Hanau (Nähe Frankfurt/M) und mit dem Schwerpunkt EDV. Ich bin dort nun schon ein halbes Jahr und wir haben eine Einheit C++ Programmieren mit dem C++ Builder von Borland (Version 5.0). Leider habe ich nicht sonderlich viel Ahnung von Programmieren allgemein (vielleicht ein bisschen HTML aber viel mehr auch nicht!). Der Lehrer gibt uns Schülern auch nicht so wirklich die Möglichkeit von ihm zu lernen, sondern teilt uns in Gruppen ein und lässt uns Projekt-Arbeiten programmieren. Jeder muss dann halt selbst sehen, woher er die benötigten Informationen nimmt – Ich versuche das jetzt mal auf diesem weg, da andere Klassen-Kamaraden und Gruppen-Mitglieder auch nicht sehr viel mehr wissen als ich (leider). Es wäre sehr wichtig und hilfreich für mich, wenn ich hier jemand finden würde, mit dem ich alle möglichen Probleme, die auftreten werden bei unserem Problem, durchgehen könnte und jemand hätte, der einfach Ahnung vom C++ Programmieren hat. Eventuell auch im Möglichkeit haben im ICQ direkt fragen zu können, oder ähnliches.
Im ersten Halbjahr hatten wir bereits ein Projekt, beidem wir ein Roulette programmieren sollten. Jedoch war ich da ein einer wesentlich leistungsstärkeren Gruppe, da die Mitglieder schon mehrere Jahre Delphie-Erfahrung hatten. Wir haben dann auf das Projekt 14 Punkte bekommen, was etwa der Note 1 entspricht. Jedoch habe ich mit bei dem eigentlichen Programmieren weniger eingebracht, leider!
Das neue Projekt durften wir selbst wählen. Es sollte nur etwas mit Dynamik zu tun haben. Als Beispiel nannte der Lehrer uns z.B. ein kleines Autorennen, Labyrinth, Tetris, oder ein kleines Jump&Run Game.
Unsere Gruppe, bestehend aus 4 Leuten, die alle recht unbegabt sind, was C++ angeht, hat sich nun überlegt ein Labyrinth zu erstellen, das im Jurassic-Park Style ablaufen soll.Dazu müssten wir etwa folgendes programmieren:
- Bewegliches Image (Pfeiltasten) -> Schon erledigt!
- Gesperrtes Gebiet (Das man das Player Image nicht überall hin bewegen kann)
- Scrollen (Wie auch immer das gehen soll)
- Eine Stoppuhr, die die Zeit misst, die benötigt wird um das Labyrinth zu durchlaufen
- Punktesystem, welches die zeit in Punkte umwandelt und mit Zusatzpunkten Addiert
- Highscore (Wie die genau funktionieren soll, weiss ich auch nicht – wäre jedoch gut, wenn man die Informationen in einer extra Datei hätte – Tabellenähnlich. Wenn das nicht zu kompliziert wird!)Am wichtigsten wäre es jetzt erstmal für uns, wenn wir irgendwie die gesperrten Zonen richtig hinbekommen könnten. Irgendwie ist es uns nicht möglich eine rechteckige gesperrte Zone zu erstellen.
Ich hänge jetzt erstmal das schon programmierte an. Würde mich freuen, wenn sich jemand finden würde, der uns dabei helfen könnte!!
http://www.rza-clan.cnpro.de/jp-th/screenshot.jpg
http://www.rza-clan.cnpro.de/jp-th/jp.rar[ Dieser Beitrag wurde am 04.02.2003 um 17:52 Uhr von MiG editiert. ]
-
Sehr merkwürdig... Ihr bekommt Aufgaben ohne das euch c++ beigebracht wurde
Dann würd ich mir erst mal ein gutes Buch zulegen.
-
gute idee... wo finde ich am besten ein buch zur dynamik?
-
halb so wild:
- Bewegliches Image (Pfeiltasten) -> Schon erledigt!
Fein- Gesperrtes Gebiet (Das man das Player Image nicht überall hin bewegen kann)
Da hab ich bis jetzt auch noch keine Ahnung- Scrollen (Wie auch immer das gehen soll)
In der Faq ist etwas beschrieben, die billigversion wäre das wenn dein Image den Rand erreicht einfach eine neue Form2 angzeigt wird und es dort weiter geht. Wie bei den ganz alten Dosspielen- Eine Stoppuhr, die die Zeit misst, die benötigt wird um das Labyrinth zu durchlaufen
Dafür kannst du super den Timer nehmen, dann am besten oben in deiner form1.cpp int Zeit; deklarieren und den Timer immer Zeit = Zeit+1 machen lassen. Unten rechts könntest du ein Label platzieren wo der Timer immer die Zeit ausgibt.
- Punktesystem, welches die zeit in Punkte umwandelt und mit Zusatzpunkten Addiert
Bau doch in den Timer eine Funktion ein nach dem Motto
if(Spielzuende) { if(Zeit < 20) { Punkte = Zeit*2; } else { Punkte = Zeit; } }
- Highscore (Wie die genau funktionieren soll, weiss ich auch nicht – wäre jedoch gut, wenn man die Informationen in einer extra Datei hätte – Tabellenähnlich. Wenn das nicht zu kompliziert wird!)
Neue Form mit Label ausstatten so das es wie eine Tabelle aussieht und die Werte in einer textdatei speichern, so würde ich es machen.
Das sind alles nur grobe Ideen, kannst du gar kein c++?
-
Verschoben nach "Spiele/Grafik".
Wenn du soweit bist, dass du konkrete, speziell auf den C++Builder bezogene Fragen zur Implementierung bestimmter Funktionen stellen kannst, dann kannst du dich gerne wieder an das BCB-Forum wenden.
-
Hallo MiG,
ich bin gerne bereit euch zu helfen.
Meine E-Mail: snoopy_kmo@web.deMit GetPixel bekommt man die Farbe eines Punktes. Je nach Farbe kann man das Gebiet ganz sperren, oder die Geschwindigkeit des Images verringern und damit sehr viele verschiedene Wege mit verschiedenen Zeitdauern realisieren.
snoopy_kmo
-
Wenn ihr das Spielfeld zB als 2dimensionales Array (würd ich empfehlen) gespeichert habt, könnt ihr ja bei jeder Bewegung den Bereich des Feldes wo ihr hinwollt abfragen und schauen ob ihr da überhaupt hingehen dürft. Stell ich mir nicht so schwierig vor... habs aber auch noch nie gemacht
-
@ <Antwortender>:
Danke erstmal fuer deine hilfe! Wirklich weitergebracht hat sie mich leider nicht
Ich habe ein Form gemacht und habe dort oben die Variable "Zeit" deklariert. Auch habe ich einen Timer erstellt und den parameter "Zeit=Zeit +1" in diesem eingefügt. Leider funktioniert das script nichtWäre ganz cool, wenn du mir da noch weiterhelfen koenntest.
Vielleicht kennt ja auch einer n gutes online-tutorial dazu...@ snoopy_kmo:
Danke fuer dein hilfe angebot! Ich werde mich so schnell wie moeglich bei dir melden. Hast du ICQ oder IRC?@Mindwalker:
Wie funktioniert das mit den Arrays. Wo kann ich da was genaueres nachlesen??@all:
Wer hat noch ne idee woher ich vielleicht im internet gute hilfe (am besten n ausführliches dokument) zum thema dynamik finden koennte...[ Dieser Beitrag wurde am 04.02.2003 um 21:18 Uhr von MiG editiert. ]
-
hmm ich hab hier mal ne kollisionsabfrage:
void TForm1::Kollisionsabfrage(AnsiString Art) { int Oben = Image1->Top; int Unten = Image1->Top + Image1->Height; int Links = Image1->Left; int Rechts = Image1->Left + Image1->Width; { if (((Oben < Image2->Top + Image2->Height) &&(Rechts > Image2->Left) &&(Links < Image2->Left + Image2->Width) &&(Unten > Image2->Top))) { if (Art == "Hoch") Image1->Top++; if (Art == "Runter") Image1->Top--; if (Art == "Links") Image1->Left ++; if (Art == "Rechts") Image1->Left --; } }
Das ganze wird dann in der Form-KeyDown Methode mit
if (Key == VK_LEFT) { for(int i = 0; i < 10;i++) { Image1->Left --; Kollisionsabfrage("Links"); } } //usw. (VK_RIGHT,VK_UP,VK_DOWN)
aufgerufen.
Ich bin auch für Hilfe b(e)reit: joachimrothkegel@gmx.de
Ausserdem: man steht direkt am Start in dem oberen Image!
und ich würde mit transparenten Images arbeiten (falls es die in euer version gibt(ich hab 6.0)) is wesentlich schöner (finde ich).Hoffe es hilft,
Greez,
J0PS: Ich hab euer Spiel einfach mal programmiert: Nur die Exe: www.ewetel.net/~heribert.rothkegel/Jo/Project2.rar
PS2: Interesse halber: wie alt seid ihr/bist du?
-
Sorry: Nachtrag: ich hab nich das ganze game gemacht: man kann nur laufen (mit kollisionsabfrage) aber der Rest (ausm kopf: highscore, punkte zählen) is ja nich so schwer.
J0
-
Hallo J0!
Vielen vielen Danke erstmal fuer deine hilfe.
Ich bin 17 Jahre alt. Wir in der gruppe zwischen 16 und 18. (tut aber ja nicht viel zur sache)auch dich würde ich gerne fragen, ob du nicht zufaellig icq, irc oder irgend ein anderes kommunikations-mittel zur verfügung haettest, da uns das die arbeit wesentlich erleichtern wuerde!
Wegen den transparenten images - nach dieser loesung haben wir schon tagelang verzweifelt gesucht... leider wusste keiner rat. wie geht das genau, ist das eine funktion, die nur bei borland builder 6.0 geht. ich denke, ich werde mir den auchmal irgendwie organisieren...
MfG MiG
-
Hi, Ich bin einer der Mitglieder in Migs Gruppe.
Möchte mich sehr herzlich für eure Bereitschaft bedanken.Um die Jos frage zu beantworten: Nun ich bin mit meinen 18 Jahren der älteste in der Gruppe und hab mich stark auf die Grafik beschränkt, da es das einzige Gebiet ist von dem ich was verstehe.
Wir haben uns schon eine kleine story ausgedacht ist zwar erst die erste version und noch nicht ganz überdacht , möchte sie aber nicht vorenthalten
viel spaß beim lesenDer russische Staat befindet sich im Ausnahmezustand. Es ist nicht mehr möglich von Kreml aus zu regieren und der größte Flächenstaat verkümmert. Chaos bricht aus. Der Kontakt zu einigen russischen Inseln im Pazifischen Ozean bricht zusammen und die dornlebenden Menschen sind auf sich allein gestellt. Es gibt nur eine bestimmte Minderheit, die von dem Elend profitiert. Die russische Mafia. Sie bauen sich eine Existenz auf einer dieser Inseln auf. Komandorskie. Das dort ehemalige russische politische System konvertiert zu einer Diktatur, das von den obersten Mafiabossen bei einem Putsch Versuch von dem unterdrückten Volk hart bestraft wird.
Jedoch wagen sich Viele öffentlich zu protestieren und die Ein-Mann-Regierung entwickelt eine neues Rechtssystem.
Die Unruhestifter werden gefangen genommen und auf eine naheliegende unbewohnte Insel Kastrov ( der Name ist erfunden) verschleppt, dem neuen Jurassic Park, der eher einem Gefängnis gleicht als einem Familien Park. Die ganze Insel ist mit eletkrischen Gittern umzäunt.
Eine der Gefangenen ist Sandra Moore, eine amerikanische Reporterin, die die unmenschlichen Lebensbedingungen der Bevölkerung dokumentieren und veröffentlichen wollte.
Es ist ein Kampf gegen die Zeit. Denn es gibt keine Nahrung und die Reptilien können jeder Zeit zuschlagen.
Sie muss mit einer kleinen Gruppe Gefangener
einen Weg finden wie man aus der Insel entkommt.buahhhhh
-
Also, ich hab mal jos quellcode versucht. irgendwie komm ich damit aber leider nicht klar
der meint:
'TForm1::Kollisionsabfrage(AnsiString Art)' is not a member of TForm1Ich weiss nicht genau, muss da wahrscheinlich noch was hinzufügen oder so. Ich poste mal Alles, was ich geschrieben hab. Vielleicht findet ja einer den fehler. Waere super!!
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void TForm1::Kollisionsabfrage(AnsiString Art) { int Oben = Image1->Top; int Unten = Image1->Top + Image1->Height; int Links = Image1->Left; int Rechts = Image1->Left + Image1->Width; { if (((Oben < Image2->Top + Image2->Height) &&(Rechts > Image2->Left) &&(Links < Image2->Left + Image2->Width) &&(Unten > Image2->Top))) { if (Art == "Hoch") Image1->Top++; if (Art == "Runter") Image1->Top--; if (Art == "Links") Image1->Left ++; if (Art == "Rechts") Image1->Left --; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key) { if (Key == VK_LEFT) { for(int i = 0; i < 10;i++) { Image1->Left --; Kollisionsabfrage("Links"); } } if (Key == VK_RIGHT) { for(int i = 0; i < 10;i++) { Image1->Left ++; Kollisionsabfrage("Rechts"); } } if (Key == VK_UP) { for(int i = 0; i < 10;i++) { Image1->Top ++; Kollisionsabfrage("Hoch"); } } if (Key == VK_DOWN) { for(int i = 0; i < 10;i++) { Image1->Top --; Kollisionsabfrage("Runter"); } } } //---------------------------------------------------------------------------
[ Dieser Beitrag wurde am 04.02.2003 um 22:27 Uhr von MiG editiert. ]
-
Bitte was?? Magst du mir mal erklaeren, was dein problem ist?
-
Ignorier ihn, dass sind die unregistrierten Trolls
Ahc ja, wegen den Arrays, les dir halt mal nen paar tuts durch. Ich such mal nen paar raus...
-
du kannst auch mal hier auf der Page unter Tutorials schauen, da sind schon einige gute dabei...
-
@ mindwalker:
Danke fuer deine auskunft! Wäre nett, wenn du da was fuer mich haettest. die kollisionsabfrage von jo scheint zumindest in seine demo-exe super zu funktionieren, nur leider bekomme ich es nicht hinBin einfach zu bloed dafuer. Wieso kann unser lehrer auch nicht einfach den ganzen kram erklaeren. Menno!!
Naja, vielleicht kannste mir ja sagen, wieso der error dort kommt "TForm1::Kollisionsabfrage (Art)" Kein mitglied von TForm1
Muss ich das vielleicht noch irgendwo hinzufügen oder so. ich hab kein plan
tut mir echt leid
-
@MiG
meld dich mal bei ICQ 102889956 , die Trolle hier nerven
-
[doppelpost]
[ Dieser Beitrag wurde am 04.02.2003 um 23:16 Uhr von mindwalker editiert. ]
-
<J0>, wäre schoen wenn du mir helfen könntest und dich melden würdest
-
Der TGGC da oben war nicht der wirkliche TGGC... Also müsst ihr keine Angst haben, der Thread hier wird 100%ig nicht geschlossen, wo kämen wir da denn hin.
Ist doch ganz normal, dass man erstmal große Probleme beim Spiele programmieren hat
PH