| Autor |
Nachricht |
nimda4
Unregistrierter
|
nimda4 Unregistrierter
10:37:48 19.04.2012 Titel: |
C++ Einkaufsliste aber wie? |
Zitieren |
Hallo Liebe Programmier Geminde
Ich würde gerne in C++ eine Art Shop schreiben in dem man verschiedene Waffen hat welche, einen Preis haben und einen Schaden.
Wie kann ich dies machen?
Den Shop möchte ich als eine Funktion haben und es soll wenn eine auswahl getroffen worden ist, diese "Speichern"
Beispiel:
Herzlich willkommen im Shop was möchtest du kaufen?
1. Schwert (18 DMG, 200 Euro)
2. Dolch (10 DMG, 100 Euro)
3. Armbrust (14 DMG, 300 Euro)
Wenn ich jetzt 1 eingebe soll er mir auf einen String "Schwert" schreiben, mir auf einen Integer die DMG (18) schreiben und von meinem Geldbeutel(global oder lokale variable??) 200 abziehen.
Ich habe zwar eine Lösung gefunden, jedoch ist diese sehr, sehr ungeschickt und brauchtzu viel Platz (Sehr langer Code):
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #include <stdio.h>
#include <tchar.h>
#include <stdlib.h>
#include <string>
#include <time.h>
#include <csetjmp>
#include <stddef.h>
#include <iostream>
#include <conio.h>
#include <dos.h>
#include <conio.h>
#include <Windows.h>
using namespace std;
int a;
int c;
int geldbeutel;
int shop(int c)
{
cout<<"Bitte Waffe auswählen\n";
cin>>a;
switch(a)
{
case 1: c=1; break;
case 2 : c=2; break;
case 3 : c=3; break;
}
std::system("cls");
return(c);
break;
}
int _tmain(int argc, _TCHAR* argv[])
{
switch(shop(0))
{
case 1:
if(geldbeutel>=200)
{
waffe="Schwert";
schaden=18;
geldbeutel=geldbeutel-200;
break;
}
else
{
cout <<"zuweniggeld\n";
}
case 2:
if(geldbeutel>=100)
{
waffe="Dolch";
schaden=10;
geldbeutel=geldbeutel-100;
break;
}
else
{
cout <<"zuweniggeld\n";
}
case 3:
if(geldbeutel>=300)
{
waffe="Armbrust";
schaden=14;
geldbeutel=geldbeutel-300;
break;
}
else
{
cout <<"zuweniggeld\n";
} | |
Bei so wenigen Waffen währe diese Lösung für mich in ordungn nun habe ich jedoch 100+ Waffen -.-
Klassen habe ich mir auch angeschaut und die Variabeln auf KLassen zu schreiben wäre kein Problem jedoch habe ich immer das gleiche Problem:
Die Auswahl welche Waffe gekauft wurde.
Kann mir wer weiterhelfen?
Ich verwende den Microsoft Visual Studio 2008 Compailer.
Mit Freundlichen Grüssen
nimda4 |
|
|
|
 |
Namenloser324
Unregistrierter
|
Namenloser324 Unregistrierter
11:00:15 19.04.2012 Titel: |
|
Zitieren |
Hallo, folgendes wäre z.B. denkbar:
Du schreibst in eine Textdatei alle Kombinationen von Waffe und Schaden und ähnlichen Informationen die du haben möchtest und trennst die Informationen mit irgendeinem Trennzeichen(etwa einem Leerzeichen oder einem Komma).
Dann liest du in deinem Programm die Datei aus und lädst die Informationen in eine Klasse, welche du dann ganz standardmäßig ausgeben kannst.
Also kleines Beispiel:
Textdatei:
Schwert 19 200
Armbrust 10 100
usw
Zuerst steht der Name dort, danach der Schaden und dann die Kosten.
Die Klassen die du dafür benötigst könnten z.B. so aussehen:
class Waffe
{
public:
Waffe(std::string C_name, int C_dmg,int C_kosten)
std::string name;
int dmg,kosten;
}
class Waffenangebot
{
public:
void getListe(void)
{
for(int i = 0; i < Waffenliste.size();i++)
{
std::cout << "Name: " << Waffenliste[i].name << "(Dmg " << Waffenliste[i].dmg << ", Kosten " << Waffenliste[i].kosten << std::endl");
}
void addWaffe(Waffe blabla);
privat:
std::vector<Waffe> Waffenliste;
}
Dann im Programm immer eine Zeile aus der Textdatei auslesen und in ein Objekt des Typs Waffe einspeichern und das in die Klasse Waffenangebot einfügen.
Fertig.
Schau dir dazu die Klasse ifstream an, sowie die Klasse vector. |
|
|
|
 |
Namenloser324
Unregistrierter
|
Namenloser324 Unregistrierter
11:01:26 19.04.2012 Titel: |
|
Zitieren |
Oder habe ich jetzt dein Problem missverstanden? Die Auswahl ist dann eigentlich kein Problem mehr, kannst bei der Ausgabe ja noch eine Nummer davorschreiben, so dass der Nutzer weiß welche Nummer welcher Waffen entspricht. |
|
|
|
 |
Syntax_error
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.03.2012
Beiträge: 153
|
Syntax_error Mitglied
11:11:14 19.04.2012 Titel: |
|
Zitieren |
Wenn ich deine Frage richtig verstanden habe, dann willst du über 100 Waffen, aber die Waffen nicht aufschreiben.
Das funktioniert so nicht.
Aber wie mein Vorposter schon schrieb könntest du die Waffenliste in eine Datei auslagern und sie über einen fstream aus dieser datei holen.
gruß
syntax |
_________________ Die Fehler bei anderen zu suchen ist leicht,
doch sich selbst zu hinterfragen,
gleicht einigen einer Prüfung.
|
|
 |
nimda4
Unregistrierter
|
nimda4 Unregistrierter
11:25:46 19.04.2012 Titel: |
Auswahl |
Zitieren |
Zuerst mal Danke ich werde mir das alles heute und Morgen genau durch lesen und es ausprobieren
@Syntax_error
Doch die Waffen möchte ich aufschreiben, aber ich möchte nicht so viel Code haben, sprich irgend wo wird alles angezeigt und mit Switch die Auswahl getroffen, (das ist so gut jedoch..) dann habe ich ja einen Rückgabewert (int c)
welcher dann jede einzelne Waffe mit:
| Code: | IF(c=zahl der 1.waffe, zahl der 2.waffe..., zahl der 100.waffe)
{
waffen werte auf variabeln schreiben;
} | |
überprüft. Dieser Code der praktisch nur aus IF besteht möchte ich irgendwie kleiner machen ist dies überhaupt möglich?
@Namenloser324
Wenn ich deine Variante nehme habe ich ja dann nur den Code der Waffen aus dem Programm rausgenommen und in einem Textfile jedoch muss dann dies auswahl wieder (nach meiner bis jetzt verwendeten Variante) mit IF erfolgen.
Sehe ich das so richtig?
Gruss
nimda4 |
|
|
|
 |
Namenloser324
Unregistrierter
|
Namenloser324 Unregistrierter
11:31:37 19.04.2012 Titel: |
|
Zitieren |
Nee, das geht mit ein paar Zeilen und deckt alle Fälle ab.
Klasse entsprechend anpassen:
if(Waffenliste.Waffen[EINGABE].kosten <= Geld)
{
Geld = Geld-[...].kosten;
cout << "Waffe " << "Waffenliste.Waffen[EINGABE].name << " gekauft" << endl;
}
else
cout << "Zu wenig Geld" << endl; |
|
|
|
 |
nimda4
Unregistrierter
|
nimda4 Unregistrierter
12:49:53 19.04.2012 Titel: |
Frage^^ |
Zitieren |
Danke Namenloser324
Jetzt habe ich nru das Problem das mich das ganze ziemlich verwirrt ^^-.-
Was eine Klasse ist udn ein Objekt und wie ich sie erstelle weiss ich, jedoch verstehe ich das mit der Liste und dem einlesen nicht so ganz.
Ich habe jetzt eine Liste(waffenliste.txt) die wie du gesagt ahst wie folgt aus sieht:
Schwert 19 200
Armbrust 10 100
Dolch 14 150
Ich werde mir jetzt ifstream, vector und fstream ansehen und mich noch mal melden sollte das Problem immer noch bestehen.
Vielen Dank für eure Hilfe, Ihr habt mir schon so gut geholfen in nur so kurzer Zeit
Gruss & Merci
nimda4 |
|
|
|
 |
nimda4
Unregistrierter
|
nimda4 Unregistrierter
13:17:42 19.04.2012 Titel: |
fstream |
Zitieren |
So gerade eben habe ich mri fstream angeschaut und weiss nun wie ich ein text file einlesen kann, jedoch wie kann ich die Texte beim Lerzeichen trennen udn eineln auf die Klasse speichern :O?
Hab leider nix gescheites mit der sufu gefunden (villeicht bin ich einfach zu blöd -.-)
Hab erst gerade mit dem Programmieren angefangen und verzweifle langsamm^^
Gruss
nimda4 |
|
|
|
 |
nimda4
Unregistrierter
|
nimda4 Unregistrierter
13:23:00 19.04.2012 Titel: |
fstream |
Zitieren |
Okei hab jetzt gefunden wie ich es trennen kann
getline(myfile,line,' ');
doch wie kann ich die einzelnen einträge nun speichern? |
|
|
|
 |
Namenloser324
Unregistrierter
|
Namenloser324 Unregistrierter
14:22:51 19.04.2012 Titel: |
|
Zitieren |
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|