Monopoli



  • Hallo,

    ich muss für mein Studium eine Art Minimonpoly mit 8 Feldern erstellen und habe dabei folgendes Problem bzw folgende Probleme:

    Bei der Abfrage ob man ein Objekt kaufen, oder renovieren möchte ist es egal ob man 'J', 'j', für ja, oder 'N', 'n' für nein angibt, es wird so, wie so das Objekt immer renoviert oder gekauft..
    (Das Ende, in dem Angegeben wird wer gewonnen hat ist auch nocht nicht ganz fertig.. weiß noch nicht wie ich das am besten angehen sollte..)

    Hier erstmal der Quellcode:

    // Aufgabe 2a Minipoly Yalti.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //

    #include "stdafx.h"
    #include "stdlib.h"
    #include <time.h>
    #include <string.h>
    #include <iostream>

    using namespace std;

    void main()
    {
    struct SSpieler
    {
    int aspieler[10].iGeld
    char acName[200];
    int iGeld;
    int iPosition;
    bool bAussetzen;
    };

    struct SFeld
    {
    int iMieteneu;
    int iPreis;
    int iMiete;
    char acName[50];
    bool bZuVerkaufen;
    SSpieler *pspieler;
    };

    SFeld afeld[8];
    SSpieler aspieler[10];

    unsigned int iSpieler = 0;
    unsigned int iWuerfel;
    unsigned int iGamerkasse = 0;
    char cAntwort;
    bool bGameOver;

    afeld[0].iPreis = 0;
    afeld[0].iMiete = 0;
    strcpy_s(afeld[0].acName, "Los");
    afeld[0].pspieler = NULL;
    afeld[0].bZuVerkaufen = false;

    afeld[1].iPreis = 1000000;
    afeld[1].iMiete = 100000;
    afeld[1].iMieteneu = 100000;
    strcpy_s(afeld[1].acName, "FH Cafeteria");
    afeld[1].pspieler = NULL;
    afeld[1].bZuVerkaufen = true;

    afeld[2].iPreis = 0;
    afeld[2].iMiete = 100000;
    strcpy_s(afeld[2].acName, "LAN-Party");
    afeld[2].pspieler = NULL;
    afeld[2].bZuVerkaufen = false;

    afeld[3].iPreis = 2000000;
    afeld[3].iMiete = 200000;
    afeld[3].iMieteneu = 200000;
    strcpy_s(afeld[3].acName, "FH Mensa");
    afeld[3].pspieler = NULL;
    afeld[3].bZuVerkaufen = true;

    afeld[4].iPreis = 0;
    afeld[4].iMiete = 0;
    strcpy_s(afeld[4].acName, "Gamer-Jackpot");
    afeld[4].pspieler = NULL;
    afeld[4].bZuVerkaufen = false;

    afeld[5].iPreis = 4000000;
    afeld[5].iMiete = 400000;
    afeld[5].iMieteneu = 400000;
    strcpy_s(afeld[5].acName, "Ferggies");
    afeld[5].pspieler = NULL;
    afeld[5].bZuVerkaufen = true;

    afeld[6].iPreis = 0;
    afeld[6].iMiete = 0;
    strcpy_s(afeld[6].acName, "Zur LAN");
    afeld[6].pspieler = NULL;
    afeld[6].bZuVerkaufen = false;

    afeld[7].iPreis = 8000000;
    afeld[7].iMiete = 800000;
    afeld[7].iMieteneu = 800000;
    strcpy_s(afeld[7].acName, "BigBox");
    afeld[7].pspieler = NULL;
    afeld[7].bZuVerkaufen = true;

    do
    {
    printf("Wie viele Spieler spielen mit (bis 10) ?->");
    scanf_s("%i", &iSpieler); fflush(stdin);
    }
    while (iSpieler<2 || iSpieler>10);

    //Spielerinitialisierung
    for (unsigned int i = 0; i < iSpieler; i++)
    {
    aspieler[i].iGeld = 6000000;
    aspieler[i].bAussetzen = false;
    aspieler[i].iPosition = 0; // Los = Startposition
    }

    srand((unsigned)time(NULL)); /*Pseudozufallszahlengenerator wird anhand der Systemzeit neu gemischt*/

    /*Tick-Schleife*/

    do
    {
    for (unsigned int i = 0; i < iSpieler; i++)
    {
    if (aspieler[i].bAussetzen)
    {
    aspieler[i].bAussetzen = false;
    continue;
    }
    /*Aktueller Spieler wuerfeln und ziehen lassen*/
    printf("\nSpieler %i ist an der Reihe\n", i);
    iWuerfel = rand() % 6 + 1; /*Wuerfel wird geworfen*/
    printf("Sie haben %i Euro Guthaben\n", aspieler[i].iGeld);
    printf("Sie haben %i gewuerfelt", iWuerfel);
    /*Spielzug*/
    aspieler[i].iPosition += iWuerfel;
    getchar();
    /*Sonderfall LOS*/
    if (aspieler[i].iPosition == 😎
    {
    aspieler[i].iGeld += 20000000;
    printf("Sie sind direkt auf LOS gekommen und erhalten 2 Millionen\n");
    }
    else if (aspieler[i].iPosition > 😎
    {
    aspieler[i].iGeld += 10000000;
    printf("Sie sind ueber LOS gezogen und erhalten 1 Million\n");
    }
    aspieler[i].iPosition %= 8; // Mehr als 8 Felder gibt es nicht
    printf("Ihre neue Position ist %i (%s) \n",
    aspieler[i].iPosition, afeld[aspieler[i].iPosition].acName);
    if (afeld[aspieler[i].iPosition].bZuVerkaufen
    && aspieler[i].iGeld >= afeld[aspieler[i].iPosition].iPreis)
    {
    do
    {
    printf("Wollen Sie Feld %i (%s) fuer %i Euro kaufen?"
    "[J,N]->",
    aspieler[i].iPosition,
    afeld[aspieler[i].iPosition].acName,
    afeld[aspieler[i].iPosition].iPreis);
    scanf_s("%c", &cAntwort); fflush(stdin);
    printf("\n");
    }
    while (cAntwort != 'N' || cAntwort != 'J' || cAntwort != 'n' || cAntwort != 'j');
    if (cAntwort == 'N' || 'n')
    {
    cout << "Das Objekt wurde nicht gekauft!\n";
    }
    else (cAntwort == 'J' || 'j')
    {
    aspieler[i].iGeld -=
    afeld[aspieler[i].iPosition].iPreis;
    afeld[aspieler[i].iPosition].pspieler = &aspieler[i];
    afeld[aspieler[i].iPosition].bZuVerkaufen = false;
    }
    }
    else if (afeld[aspieler[i].iPosition].pspieler == &aspieler[i]
    && afeld[aspieler[i].iPosition].iPreis <= aspieler[i].iGeld)
    {
    do
    {
    printf("Wollen Sie Feld %i (%s) fuer %i Euro renovieren? [J,N]->",
    aspieler[i].iPosition,
    afeld[aspieler[i].iPosition].acName,
    afeld[aspieler[i].iPosition].iPreis);
    scanf_s("%c", &cAntwort,1); fflush(stdin);
    printf("\n");
    }
    while (cAntwort != 'N' && cAntwort != 'J' && cAntwort != 'j' && cAntwort != 'n');
    if (cAntwort == 'J' || 'j')
    {
    aspieler[i].iGeld -=
    afeld[aspieler[i].iPosition].iPreis;
    afeld[aspieler[i].iPosition].iMieteneu += afeld[aspieler[i].iPosition].iMiete;
    printf("Die neue Miete des Feldes %s betraegt %i Euro\n",
    afeld[aspieler[i].iPosition].acName,
    afeld[aspieler[i].iPosition].iMieteneu);
    }
    else (cAntwort == 'N' || 'n')
    {
    cout<<"Das Objekt wurde nicht renoviert!\n"
    }
    }
    else if (afeld[aspieler[i].iPosition].pspieler)
    /* gehoert das Feld schon jemanden?*/
    {
    afeld[aspieler[i].iPosition].pspieler->iGeld +=
    afeld[aspieler[i].iPosition].iMieteneu;
    aspieler[i].iGeld -= afeld[aspieler[i].iPosition].iMieteneu;
    cout <<"Sie mussten "<<afeld[aspieler[i].iPosition].iMieteneu <<" Euro Miete fuer das Feld "
    <<afeld[aspieler[i].iPosition].acName<<" zahlen\n";
    }
    if (aspieler[i].iPosition == 6)
    /*Gehe zur Lan Party! Gehe nicht ueber LOS!*/
    {
    cout << "Sie gehen direkt zur LAN-Party, ziehen aber kein \nGeld bei Los ein!\n";
    aspieler[i].iPosition = 2;
    aspieler[i].iGeld -= afeld[aspieler[i].iPosition].iMiete;
    iGamerkasse += afeld[aspieler[i].iPosition].iMiete;
    aspieler[i].bAussetzen = true;
    }
    }
    /*Hat jemand schon 50 Mio Verlust oder 50 Mio Gewinn?*/
    bGameOver = false;
    for (int j = 0; j < iSpieler; j++)
    if (aspieler[j].iGeld <= -50000000 || aspieler[j].iGeld >= 50000000) /*Wenn ja*/
    bGameOver = true; /*das Spiel ist aus!*/
    }
    while (!bGameOver);
    /*Fini-Teil*/
    int iGeldMaxVerl = -50000000; // höchster Verlust
    int iGeldMaxGewinn = 50000000; // höchster Gewinn
    int iGewinner;
    j--;
    if (aspieler[j].iGeld >= 50000000)
    {
    cout <<"Spieler "<<iGewinner<<" hat gewonnen!\n";
    }
    cin.sync();
    cin.get();
    }

    Ich hoffe es kann mir jemand hier schnell helfen..

    MFG The_Freak-_-



  • Dein Code ist C++, was soll der Müll hier im C Forum?
    - rücke deinen Code vernünftig ein
    - nutze die Codetags
    - stelle eine Frage
    - u.v.a.m.



  • Wutz schrieb:

    Dein Code ist C++, …

    Wieso meinen alle immer, bloß weil cout und cin benutzt wird, es würde sich um C++ handeln. Außer dem Verwenden der Ein- und Ausgabestreams hat der Code überhaupt nichts mit C++ zu tun.



  • C ist es jedenfalls nicht.



  • C++ler schrieb:

    Wieso meinen alle immer, bloß weil cout und cin benutzt wird, es würde sich um C++ handeln. Außer dem Verwenden der Ein- und Ausgabestreams hat der Code überhaupt nichts mit C++ zu tun.

    Dann verwende direkt stdio.h und printf/scanf/getxxx . Oder wechsele den Lehrer mit der Begründung auf Verdacht akuter Inkompetenz. Die würde er zeigen, wenn er euch sagt, C und C++ zu mischen.


Anmelden zum Antworten