Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Hilfe beim Spiel Mensch Ärgere dich nicht

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
26.06.2007, 16:15 Uhr
~B-Side
Gast


Hallo zusammen

Ich habe ein Projekt in der Schule aufbekommen leider bin ich in C++ ein Totaler Anfänger und bin auch ne niete in sachen Programmierung
Die aufgabe ist es das Spiel mensch ärgere dich nicht zu implementieren nur fehlt mir die idee wie ich das anstellen soll Ich habe mal angefangen das ganze zu gestalten muss es bis freitag den 29.06.2007 fertig machen nur wenn das so weiter geht krieg ich das nicht hin

anbei mein vortschritt an dem ich nicht weiter komme: d.h ich kann den "SPIELSINN" irgendwie nicht hinbekommen kann mir einer von euch evtl ein beispiel zb spieler gegen spieler ausprogrammieren damit ich einen haken hab an den ich mich klammern kann
wär echt nett.



C++:
#include "stdafx.h"  
#include <stdlib.h>  
#include "stdio.h"  
#include <time.h>

#include "stdafx.h"
#include <stdio.h>

int main(){


    int auswahl, spieleranzahl, wurf;
    char spieler1, spieler2, spieler3, spieler4;
    

    printf("Was moechten sie Tun?\n\n");
    printf("1: Spieler vs. Computer\n\n");
    printf("2: Spieler vs. Spieler\n\n");

    printf("bitte ausw\204hlen 1 oder 2\nAuswahl:");
    scanf("%d", &auswahl);
    fflush(stdin);
    // das ist Spieler vs. Pc Part
    if(auswahl==1){
        printf("Spieler 1 bitte Namen eingeben!\nName:");
        scanf("%s", &spieler1);
        fflush(stdin);

        while(wurf<7){
            printf("Spieler1 w\204rfelt\n");
            wurf = rand() % 6 + 1;
            printf("%d\n", wurf);

            printf("PC w\204rfelt\n");
            wurf = rand() % 6 + 1;
            printf("%d\n", wurf);
        }
    }
    //der SPieler vs. Pc part endet hier


    else{
        if(auswahl==2){
        printf("Wieviele Spieler Spielen mit ?\n\n");
        printf("2 Spieler\n\n");
        printf("3 Spieler\n\n");
        printf("4 Spieler\n\nSpieleranzahl:");
        scanf("%d", &spieleranzahl);
        fflush(stdin);
        }
    }
        


    if(spieleranzahl==2){
    printf("Spieler 1 bitte Namen eingeben!\nName:");
    scanf("%s", &spieler1);
    fflush(stdin);
    printf("Spieler 2 bitte Namen eingeben!\nName:");
    scanf("%s", &spieler2);
    fflush(stdin);
    }

    if(spieleranzahl==3){
    printf("Spieler 1 bitte Namen eingeben!\nName:");
    scanf("%s", &spieler1);
    fflush(stdin);
    printf("Spieler 2 bitte Namen eingeben!\nName:");
    scanf("%s", &spieler2);
    fflush(stdin);    
    printf("Spieler 3 bitte Namen eingeben!\nName:");
    scanf("%s", &spieler3);
    fflush(stdin);
    }

    if(spieleranzahl==4){
        printf("Spieler 1 bitte Namen eingeben!\nName:");
    scanf("%s", &spieler1);
    fflush(stdin);
    printf("Spieler 2 bitte Namen eingeben!\nName:");
    scanf("%s", &spieler2);
    fflush(stdin);    
    printf("Spieler 3 bitte Namen eingeben!\nName:");
    scanf("%s", &spieler3);
    fflush(stdin);
    printf("Spieler 4 bitte Namen eingeben!\nName:");
    scanf("%s", &spieler4);
    fflush(stdin);
    }

    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.06.2007, 16:22 Uhr
~B-Side
Gast


Wir Arbeiten mit MSV C++ und haben von Printf über scanf bis hin zu feldern und Dateien eigentlich alles Gemacht

hatte ich vorher vergessen zu erwähnen
wär euch über jede hilfe echt dankbar

gruß B-Side
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.06.2007, 17:08 Uhr
Karldin Shinowa
Professional Noob


Habt ihr auch wirklich C++ und nicht C gemacht? printf, scanf sind C befehle. Kennt ihr schon klassen?
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.06.2007, 17:10 Uhr
0xdeadbeef
Gott
(Operator)


Mal so nen rudimentären mock-up, ich würd mir das etwa so vorstellen:

C++:
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>

template<typename t> user_input(std::string const &prompt) {
  t ret;
  std::istringstream isstr;
  std::string line;

  do {
    std::cout << prompt << std::endl;

    std::getline(std::cin, line);

    isstr.clear();
    isstr.str(line);
    isstr >> ret;
  } while(!isstr);

  return ret;
}

class spieler_base {
public:
  virtual void               play() const = 0;
  virtual std::string const &name() const = 0;
};

class spieler_ai {
  // ...
};

class spieler_human {
  // ...
};

int main() {
  int auswahl, spieleranzahl, wurf;
  std::vector<spieler_base*> spieler;

  std::srand(std::time(0));

  std::cout << "1: Spieler vs Computer\n"
               "2: Spieler vs Spieler\n";
  do {
    auswahl = user_input<int>("Auswahl: ");
  } while(auswahl < 1 || auswahl > 2);

  switch(auswahl) {
  case 1:
    {
      spieler.push_back(new spieler_human(user_input<std::string>("Name Spieler: ")));
      spieler.push_back(new spieler_ai   (user_input<std::string>("Name PC: ")));
      break;
    }
  case 2:
    {
      std::ostringstream assembler;

      do {
    spieleranzahl = user_input<int>("Anzahl Spieler: ");
      } while(spieleranzahl < 2 || spieleranzahl > 4);
      for(int i = 1; i <= spieleranzahl; ++i) {
    assembler.str("");
    assembler << "Name Spieler " << i << ": ";
    spieler.push_back(new spieler_human(user_input<std::string>(assembler.str())));
      }
    }
  }

  
  for(int i = 0;; i = (i + 1) % spieler.size()) {
    spieler[i]->play();
    if(jemand hat gewonnen) {
      ganz_doll_freuen();
      break;
    }
  }

  for(std::vector<spieler_base*>::iterator i = spieler.begin(); i != spieler.end(); ++i) {
    delete *i;
  }
}


Naja - im Endeffekt wirste noch ein Spielbrett brauchen, das die Spieler als Referenz oder so kriegen - brauchst ja die Statusinfo, um es anzeigen zu können, und die AI muss irgendwie entscheiden, welchen Stein sie vorzieht.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.06.2007, 17:17 Uhr
Karldin Shinowa
Professional Noob


Ich mag ja nichts sagen aber sehr einfach für Anfänger verständlich ist dieser (gute) Entwurf sicher nicht. Btw warum programmieren Lehrer immer C mit Klassen statt richtiges C++
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.06.2007, 17:54 Uhr
öni



Weil die Lehrer meist selber nicht mit C angefangen haben. Wobei ich sagen muss das es schwer sein wird innerhalb von 4 Tagen eine KI zu programmieren.
Zumindest als Anfänger.

Dieser Post wurde am 26.06.2007 um 17:54 Uhr von öni editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.06.2007, 20:19 Uhr
Kest
saint


>Karldin Shinowa< hat recht: die Aufgabe ließe sich ein bisschen... evidenter veranschaulichen. So was schreckt die Anfänger nur ab.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.06.2007, 21:54 Uhr
Blubber2063



Da stand auch nie was vonner Ki, ob das mit den Computern nicht ne Erfindung ist ist noch ne Frage, ansonsten, gibts ja auch noch die Möglichkeit den Computer würfeln zu lassen und solange er keine Figur schlagen kann eine zufällige Figur ziehen zu lassen, das sollte ein Anfänger schon hinkriegen.
Dieser Post wurde am 26.06.2007 um 21:54 Uhr von Blubber2063 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.06.2007, 23:32 Uhr
~B-Side
Gast


also danke schonmal für den vorschlag aber der schreckt mich wirklich sehr ab da kommen sachen wie class oder vektor dran die ich zuvor noch nicht gehört hab wir programmieren mit MSV C++ aber was wir machen tendiert denk ich eher zu C standards also printf, scanf, fflush,
Felder und dateien.

hat denn keiner von euch eine einfachere und leichter verständlichere lösung (beispiel) dass er mir anbieten könnte ?

btw was ist eine Ki ?

ach und wir benutzen eigentlich nur folgende header:

#include "stdafx.h"
#include <stdlib.h>
#include "stdio.h"
#include <time.h>

vlcht hilft euch das bei dem einfachen beispiel weiter

ich bräuchte wie gesagt nur EIN ausprogrammiertes beispiel wie Spieler gegen Spieler oder Spieler vs. Computer eins von beiden würd mir reichen um daraus dann zu folgen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.06.2007, 00:14 Uhr
öni



Eine KI ist eine Künstlische Intelligenz man meint damit einen virtuellen Gegner also einen Computer. Du musst dem Computer ja sagen was er zu tun hat wenn er dran ist.

Als erstes würde ich mir mal Gedanken machen wie du dein Spielfeld darstellen willst, das andere ist dann, denke ich, nicht so schwer, auser ob das mit der KI einfach ist hmm? Weiß ich nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: