Wie gehts weiter???

Schnelle objektorientierte, kompilierende Programmiersprache.
Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Wie gehts weiter???

Beitrag von Empire » Mo Jan 26, 2009 5:46 pm

HI an alle
ich hab 2 fragen:
1.
Ich hab das Tutorial auf http://www.tutorials.at durchgearbeitet und würde jetzt gerne darauf auf bauen.
Ich würde gerne in richtung Spiele entwicklung wietermachen.
Befor jemand ein wirf das das keine so gute Idee ist weil das kompliziert is oder was weis ich :
ICH WEIS DAS ICH NIE MIT HALO3 UND CO KNKURIEREN KANN
(deshalb hat man mich in nem anderen forum ganz abgeblockt weil sie glauben das ich halo3 übertrumpfen will oder sowas)
ich will nur spass haben und nen bischen üben

2.
kann mir jemand erklären wie ich bei dem Skript (ich hab Cod::Block verwendet) machen kann das sich wenn jemand ne falsche antwoort gibt erst die Auswertung kommt (das hab ich schon gemacht) und DANN sich alles wider von vorne abspielt?
Hier das Skript:

Code: Alles auswählen

#include <stdio.h>

int g = 0, s = 0, f =0;
char n [20];

int main ()

{
printf ("\n\nWillkommen bei unserem Quiz, \n\nHier koennen sie ihr Wissen ueber 3 Themenbereiche testen\n\n");
printf ("Bitte geben sie nur die Nummer der Antwort ein!\n");
printf ("Welches Fachgebiet moechten sie waehlen ?");
printf ("\n1. Physik");
printf ("\n2. Chemie");
printf ("\n3. Geschichte\n");
scanf ("%d", &g);

if ( g == 1 )
   {
   f = 1;
   printf ("\nA. Wie kann man Energie erzeugen ?");
   printf ("\n1. Mit Solarzellen");
   printf ("\n2. Durch Atomspaltung");
   printf ("\n3. Man kann keine Energie erzeugen\n");
   scanf ("%d", &g);
   if (g == 3)
   {
   s = 1;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nB. Wie viele Arten der Waermeuebertragung gibt es ?");
   printf ("\n1. 1");
   printf ("\n2. 5");
   printf ("\n3. 3\n");
   scanf ("%d", &g);
   if (g== 3)
   {
   s = 2;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nC. Wie viele Arten von radioaktiver Strahlung gibt es ?");
   printf ("\n1. 1 ");
   printf ("\n2. 3 ");
   printf ("\n3. mehr als 25\n");
   scanf ("%d", &g);
   if (g== 2)
   {
   s = 3;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nD. Was wird in Kraftwerken zum Kuehlen verwendet ?");
   printf ("\n1. Schweres Wasser");
   printf ("\n2. Wasser");
   printf ("\n3. Ueberschweres Wasser\n");
   scanf ("%d", &g);
   if (g== 1)
   {
   s = 4;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nE. Was ist Ampere ?");
   printf ("\n1. Stromspannung");
   printf ("\n2. Stormstaerke");
   printf ("\n3. Widerstand\n");
   scanf ("%d", &g);
   if (g== 2)
   {
   printf ("\nRichtig!");
   g =0;
   s = 5;
   g=975;
   }
   else g=975;
   }
   else g=975;
   }
   else g=975;
   }
   else g=975;
   }
   else g=975;
   }


if ( g == 2 )
   {
   f = 2;
   printf ("\nA. Welches Element hat die Bezeichnung 'AU' ?");
   printf ("\n1. Eisen");
   printf ("\n2. Silber");
   printf ("\n3. Gold\n");
   scanf ("%d", &g);
   if (g == 3)
   {
   s = 1;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nB. Wenn bei einer chem. Reaktion mehr Energie frei wird\nals Aktivierunsenergie hinzugefuegt wurde, ist sie... ?");
   printf ("\n1. endotherm");
   printf ("\n2. redotherm");
   printf ("\n3. exotherm\n");
   scanf ("%d", &g);
   if (g== 3)
   {
   s = 2;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nC. Wie viele Elektronen passen auf die 3. Schale ?");
   printf ("\n1. 6");
   printf ("\n2. 8");
   printf ("\n3. 16\n");
   scanf ("%d", &g);
   if (g== 2)
   {
   s = 3;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nD. In welchem Verhaeltnis steht der Atomkern zur Atomhuelle ?");
   printf ("\n1. 1 : 100");
   printf ("\n2. 1 : 50");
   printf ("\n3. 1 : 200\n");
   scanf ("%d", &g);
   if (g== 1)
   {
   s = 4;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nE. Welches ist das am haeufigsten vorkommmende Element auf der Erde ?");
   printf ("\n1. Kohlenstoffdioxid");
   printf ("\n2. Sauerstoff");
   printf ("\n3. Stickstoff\n");
   scanf ("%d", &g);
   if (g== 2)
   {
   printf ("\nRichtig!");
   s = 5;
   g=975;
   }
   else g=975;
   }
   else g=975;
   }
   else g=975;
   }
   else g=975;
   }
   else g=975;
   }

if ( g == 3 )
   {
   f = 3;
   printf ("\nA. Welchen Zeitraum umfasst das `Mittelalter´ ?");
   printf ("\n1. 500 n. Chr. - 1534 n. Chr.");
   printf ("\n2. 450 n. Chr. - 1492 n. Chr.");
   printf ("\n3. 600 n. Chr. - 1492 n. Chr.\n");
   scanf ("%d", &g);
   if (g == 3)
   {
   s = 1;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nB. In welchem Jahr kroente sich Napoleon zum Kaiser ?");
   printf ("\n1. 1814");
   printf ("\n2. 1798");
   printf ("\n3. 1804\n");
   scanf ("%d", &g);
   if (g== 3)
   {
   s = 2;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nC. Wann war der Reichstagbrand ?");
   printf ("\n1. 1923");
   printf ("\n2. 1933 ");
   printf ("\n3. 1937 \n");
   scanf ("%d", &g);
   if (g== 2)
   {
   s = 3;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nD. Auf welche Insel wurde Napoleon verdammt ?");
   printf ("\n1. Korsika");
   printf ("\n2. Kreta");
   printf ("\n3. Madagaskar\n");
   scanf ("%d", &g);
   if (g== 1)
   {
   s = 4;
   printf ("\nRichtig! Hier kommt die naechste Frage:");
   printf ("\n\n\nE. Wann starb der letzte Inka-Herrscher ?");
   printf ("\n1. 1433");
   printf ("\n2. 1533");
   printf ("\n3. 1633\n");
   scanf ("%d", &g);
   if (g== 2)
   {
   printf ("\nRichtig!");
   s = 5;
   g =975;
   }
   else g=975;
   }
   else g=975;
   }
   else g=975;
   }
   else g=975;
   }
   else g=975;
   }


if ( g == 975)
   {
   printf ("Ihre Testergebnisse werden Ausgewertet...\n\n\nWollen sie das Ergebnis sehen?(1=ja,2=nein)\n\n\n");
   scanf ("%d", &g);
   if (g== 1)
   {

   if ( s == 0 ) printf ("Versuchen sie es lieber nocheinmal!");
   else
   {
   printf ("Ok. Sie sind ein");


   if (s ==1)
   {
   printf (" Anfaenger ");
   if ( f == 1) printf ("in Pysik!\n\n");
   if ( f == 2) printf ("in Chemie!\n\n");
   if ( f == 3) printf ("in Geschichte!\n\n");
   }


   if (s ==2)
   {
   printf (" Fortgeschrittener ");
   if ( f == 1) printf ("in Pysik!\n\n");
   if ( f == 2) printf ("in Chemie!\n\n");
   if ( f == 3) printf ("in Geschichte\n\n");
   }


   if (s ==3)
   {
   printf (" Kenner ");
   if ( f == 1) printf ("der Pysik!\n\n");
   if ( f == 2) printf ("der Chemie!\n\n");
   if ( f == 3) printf ("der Geschichte!\n\n");
   }


   if (s ==4)
   {
   printf (" Experte ");
   if ( f == 1) printf ("in Pysik!\n\n");
   if ( f == 2) printf ("in Chemie!\n\n");
   if ( f == 3) printf ("in Geschichte!\n\n");
   }


   if (s ==5)
   {
   printf (" Dr. ");
   if ( f == 1) printf ("der Pysik!\n\n");
   if ( f == 2) printf ("der Chemie!\n\n");
   if ( f == 3) printf ("der Geschichte\n\n");
   }
   }

   if ( g == 2 ) printf ("Dann Auf wiedersehen!");
   scanf ("%d", &g);
   if ( g == 1) printf ("Auf Wiedersehen!");
   }
   }





return 0;
}
[[ edit by Dirty Oerti: Code Tags eingefügt ]]

wäre cshön wenn mir jemand bei meinen Problemen helfen könnte

mfg Empire

Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Re: Wie gehts weiter???

Beitrag von Empire » Mo Jan 26, 2009 5:48 pm

sorry ich hab das Skript erwischt wo die Fragen noch nicht überarbeitet ist.
Deshalb sag ich gleich mal :
die lösungen für alle bereiche ist
Frage1: 3
Frage2: 3
Frage3: 2
Frage4: 1
Frage5: 2


mfg

Empire

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: Wie gehts weiter???

Beitrag von +Fuss+ » Mo Jan 26, 2009 5:55 pm

So, willkommen im Forum!

Ich habe den Code zwar nur überflogen, aber, wenn du willst das alles wieder ganz vorne anfängt, könntest du die ganze main-Funktion in eine Schleife packen.
Dann eine Variable zum Beenden, und wenn diese Variable auf einen bestimmten Wert gesetzt wird (z.B. wenn das Programm komplett mit richtigen Antworten durchgelaufen ist) wird das Programm beendet.

Außerdem würde ich versuchen die ganzen if's in eine switch-Funktion umzuwandeln. http://proggen.org/doku.php?id=c:switch

Wenn du das Tutorial auf tutorials.at schon durch hast, kannst du dir auch diese hier ansehen: http://www.proggen.org
Einiges kannst du vermutlich schon, aber vielleicht ist auch was neues dabei.

Ich hoffe ich konnte dir ein bisschen weiterhelfen.
MfG Fuss

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Wie gehts weiter???

Beitrag von Dirty Oerti » Mo Jan 26, 2009 6:13 pm

Hallo Empire!

Schön, dass du hergefunden hast.
Bevor ich mit der Antwort auf deine Frage anfange möchte ich dich noch kurz ein bisschen zurechtweisen:
Bitte achte etwas mehr auf deine Rechtschreibung. Du musst kein super Hochdeutsch fabrizieren, aber lesbar sollten deine Beiträge schon sein.
Außerdem solltest du, wenn du Code darstellen willst, immer Code Tags um den Code schreiben:

Code: Alles auswählen

[code]//dein Code...
[/code]

Nun zu deiner Frage:

Das Programm kannst du, wie [s]Fuß[/s] (Anmerkung: Wie geht durchstreichen?) +Fuss+ schon geschrieben hat, am besten in einer Schleife laufen lassen:

Code: Alles auswählen

int weiter_machen = 0;

do {

  //alle Variablen auf 0 bzw ihren Startwert setzen, damit nichts vom letzten Durchlauf übrig bleibt

   //dein ganzer Programmcode

  // Eine Abfrage, ob nocheinmal gespielt werden soll
  // weiter_machen = 1 => nochmal
  // ansonsten beenden
} while (weiter_machen == 1);
Zu deinem Code noch:
Versuche, Teile deines Codes in Funktionen auszulagern.
Das erhöht die Übersichtlichkeit.
Außerdem solltest du Wiederholungen vermeiden.
Evtl kannst du die ganzen Strings ("Blabla") aus dem Teil des Programmes herausholen:

Code: Alles auswählen

char * strFrage1 = "Dies ist die erste Frage!\n";

printf (strFrage1);

Zu deiner Idee Spiele zu programmieren:
Bevor du damit anfängst solltest du ersteinmal weiter Konsolenprogramme schreiben.
Lerne Dateiein- und ausgabe.
Lerne, Funktionen einzusetzen.

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: Wie gehts weiter???

Beitrag von +Fuss+ » Mo Jan 26, 2009 6:20 pm

Das Programm kannst du, wie Fuß schon geschrieben hat, am besten in einer Schleife laufen lassen:
aaaaahhhhh
Fuss hat nichts mit dem Körperteil Fuß zu tun!
Sonst hätte ich mich "Hirn" genannt ;)

Fuss -> Spitzname, abgeleitet vom Nachnamen "Fuchs" (siehe Avatar)

MfG Fuss

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Wie gehts weiter???

Beitrag von Dirty Oerti » Mo Jan 26, 2009 6:51 pm

+Fuss+ hat geschrieben:
Das Programm kannst du, wie Fuß schon geschrieben hat, am besten in einer Schleife laufen lassen:
aaaaahhhhh
Fuss hat nichts mit dem Körperteil Fuß zu tun!
Sonst hätte ich mich "Hirn" genannt ;)

Fuss -> Spitzname, abgeleitet vom Nachnamen "Fuchs" (siehe Avatar)

MfG Fuss
:D Hupps, Sorry!!
War nicht so gemeint^^ Das es sich nicht auf den Fuß bezieht ist mir schon klar, ich war nur so in Gedanken^^
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Wie gehts weiter???

Beitrag von Kerli » Mo Jan 26, 2009 7:15 pm

Dirty Oerti hat geschrieben:(Anmerkung: Wie geht durchstreichen?)
Zurzeit gar nicht ;)
Dirty Oerti hat geschrieben:Zu deiner Idee Spiele zu programmieren:
Bevor du damit anfängst solltest du ersteinmal weiter Konsolenprogramme schreiben.
Lerne Dateiein- und ausgabe.
Lerne, Funktionen einzusetzen.
Das muss ja auch nicht unbedingt ein Widerspruch sein. Man kann auch in der Konsole Spiele entwickeln und dabei auch einiges lernen. Das kann wie Empire schon gezeigt hat ein Quiz sein, es können aber durchaus auch andere Spiele wie zb Tic-Tac-Toe realisiert werden...

Achja. Willkommen im Forum, Empire :)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Wie gehts weiter???

Beitrag von Dirty Oerti » Mo Jan 26, 2009 7:32 pm

Kerli hat geschrieben:Zurzeit gar nicht ;)
Dachte ich mir fast. Das müsste Xin mal anstellen^^
Kerli hat geschrieben:Man kann auch in der Konsole Spiele entwickeln
Jup. Er (?) sollte sich nur vorerst von der Idee etwas entfernen, Spiele (in der Art wie Halo etc, also 3d/2d Spiele) programmieren zu wollen.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Wie gehts weiter???

Beitrag von Xin » Mo Jan 26, 2009 7:45 pm

Empire hat geschrieben:HI an alle
ich hab 2 fragen:
1.
Ich hab das Tutorial auf http://www.tutorials.at durchgearbeitet und würde jetzt gerne darauf auf bauen.
Ich würde gerne in richtung Spiele entwicklung wietermachen.
Das wollen alle, obwohl es so coole andere Themen gibt, wo man auch mehr Beachtung finden kann. ^^
Aber jeder, wie er mag.
Empire hat geschrieben:ich will nur spass haben und nen bischen üben
Vernünftige Rangehensweise.

Aber was ist nun Deine Frage 1?
Empire hat geschrieben:2.
kann mir jemand erklären wie ich bei dem Skript (ich hab Cod::Block verwendet) machen kann das sich wenn jemand ne falsche antwoort gibt erst die Auswertung kommt (das hab ich schon gemacht) und DANN sich alles wider von vorne abspielt?
Hier das Skript:
Bei kompilierende Sprachen spricht man eher vom Quelltext als vom Skript.
Bitte formatiere zunächst erstmal richtig, also bei { beginnst Du einzurücken und bei } rückst Du wieder zurück.

Wenn Du etwas wiederholen möchtest, so schreit das nach einer while-Schleife.
Empire hat geschrieben:wäre cshön wenn mir jemand bei meinen Problemen helfen könnte
Dafür ist das Forum da.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Re: Wie gehts weiter???

Beitrag von Empire » Di Jan 27, 2009 12:31 pm

Danke an alle das war sehr aufschlussreich.
Das mit der schleife hatte ich da vergessen weil ich das thema spät abens gelesen habe.
Das mit switch hatte ich noch nicht gelernt als ich das Quiz geschrieben habe.
Das mit den rechtschreib fehlern, ich hab LRS (LeseReschtschreibSChwäche(is angeboren)) aber ich verspreche das ich mich bemühen werde.
Die Empfolenen Tutorials werd ich mir anschauen.
Zu den Konsolen spielen:
Gibt es da ein Spetzieless Tutorial da ich noch nitmal 1 Woche C lerne hab ich noch keinen schimmer wie das gehen soll.

mfg

Empire (er)

Antworten