WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Hilfe C++ Probleme (http://www.wcm.at/forum/showthread.php?t=55206)

shyboy 02.05.2002 15:16

Hilfe C++ Probleme
 
Hi Leute!
So sollte der Bildschirmausdruck vorerst einmal aussehen:
______
| | |
______
| | |
______
| | |

Ich habe das ganze mir arrays programmiert weil nachher in die 4 freien Kästchen noch etwas hineinkommen soll! Jedoch zeigt es mir bei meiner Idee etwas ganz anderes auf der Ausgabemaske an.Ich brauche das auf einer win32 konsolenanwendung!Meine Idee war so:

int a,b,i,zz[9];
for(i=1;i<=6;i++)
printf("-");
printf("\n");

for(b=0;b<9;b=b+3){

for(a=0;a<3;a++){
printf("I ");
printf("%c\n",zz[a+b]);

}
printf("------\n");
}

Ich hoffe mir kann wer helfen! Danke schon im voraus
Bye Jürgen

Biri 02.05.2002 15:49

was soll das programm machen ??
 
hallo !

warum gibts du am Anfang die zeichenfolge "------" mit
einer for schleife aus - geht doch, wie auch am schluss mit
printf("------\n");

Was für eine aufgabe soll dieses programm überhaupt erfüllen ??

wenn du willst, dass dir jemand hilft, solltest du ev. die
zu lösende aufgabe genauer beschreiben !

mfg
-hannes

shyboy 02.05.2002 16:08

Es soll ein XXO, oder Tic Tac To Programm werden
 
Sorry, dass ich das nicht geschrieben haben.

Es soll also so ein simples X-X-O Spiel werden, wo 2 Spieler am Computer gegeneinander spielen!
Der vorhandene Raster wird in A-C und 0-2 unterteilt und der Spieler gibt dann das Feld an wo sein X oder O reinkommen soll.Hat dann einer 3 X/bzw O´s in einer Reihe egal ob horizontal oder vertikal hat er gewonnen. Hier einmal das Programm soweit ich bin, es fehlt halt leider noch einiges.Jedoch habe ich jetzt erstmal das Problem dass die Ausgabe falsch erscheint.




#include "stdafx.h"
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>


int main(int argc, char* argv[])
{

int i, b, a, y, x, z,zz[9];
char xc,A,B,C;

printf(" Tic Tac Toe\n");

//Feld zeichnen//

for(i=1;i<=6;i++)
printf("-");
printf("\n");

for(b=0;b<9;b=b+3){

for(a=0;a<3;a++){
printf("I ");
printf("%c\n",zz[a+b]);

}
printf("------\n");
}

//Frage//

printf("1.Spieler:[z.B.A]");
xc=getch();
printf("1.Spieler:[z.B.1]");
scanf("%i", &y);


if (xc=A)
x=0;
if (xc=B)
x=1;
if (xc=C)
x=2;

y=y*3;

z=x+y;

return 0;
}

Biri 02.05.2002 16:57

habs schnell programmiert
 
...möglich, dass noch fehler drinnen sind, aber fürs erste sollte das reichen.
die gewinnabfrage kannst dir noch selbst überlegen.
(is ja fad, wenn ma alles vorgegeben bekommt, oder ? ;)

mfg
-hannes


#include "stdafx.h"
#include "string.h"

#define ZEILEN 3
#define SPALTEN 3

#define SPIELER_1 'X'
#define SPIELER_2 'O'

char feld[ZEILEN][SPALTEN];

void ausgabe()
{
for (int z=0; z < ZEILEN; z++)
{
printf("-------\n");
for (int s=0; s < SPALTEN; s++)
printf("|%c",feld[z][s]);

printf("|\n");
}
printf("-------\n");
}

void initfeld()
{
for (int z=0; z < ZEILEN; z++)
for (int s=0; s < SPALTEN; s++)
feld[z][s] = '\0';
}

bool checkifwon()
{
// selbst ausdenken - sonst is ja fad !! ;)
return false;
}


int main(int argc, char* argv[])
{
int zeile,spalte,zuege = 1;
char meinzeichen;

printf("\n TIC-TAC-TOE\n\n");
initfeld();

while ((zuege <= ZEILEN * SPALTEN) && (checkifwon() == false))
{
ausgabe();

if (zuege % 2 == 0) meinzeichen = SPIELER_1;
else meinzeichen = SPIELER_2;

fflush(stdin);
printf("\nIhr Zug (Zeile):");
scanf("%d",&zeile);
printf("Ihr Zug (Spalte):");
scanf("%d",&spalte);

if (zeile >=0 && zeile <= 2 && spalte >=0 && spalte <= 2)
{
if (feld[zeile][spalte] == '\0')
{
feld[zeile][spalte] = meinzeichen;
zuege++;
}
else
printf("Feld bereits belegt !\n");
}
else
printf("Zug ungueltig !\n");
}

fflush(stdin);
getchar();
return 0;
}

Flink 03.05.2002 10:28

von C nach C++
 
Die nächste Aufgabe wäre dann, statt einem C-Programm eines in C++ zu schreiben. Der Bildschirm wird als Klasse definiert, 'void initfeld()' kommt in den Konstruktor dieser Klasse usw. .

Biri 06.05.2002 11:34

c++
 
hallo !

genaugenommen ist mein lösungsvorschlag schon C++.

variablenvereinbarungen innerhalb einer for-schleife geht in C nicht.
glaub aber nicht, dass du für dieses "problem" irgendwelche
speziellen möglichkeiten von C++ benötigst.

viel spaß beim tic-tac-toe spielen.
...wär sicha intressant, einen computergegner zu programmiern ! ;)

-hannes

citizen428 06.05.2002 14:45

Re: c++
 
Zitat:

Original geschrieben von Biri
genaugenommen ist mein lösungsvorschlag schon C++.

variablenvereinbarungen innerhalb einer for-schleife geht in C nicht.

Also ich hab ja schon echt lange nicht mehr in C(++) programmiert, aber wenn du mit "Variablenvereinbarungen gehen nicht in for-Schleifen in C" z.B. das meinst: for (int z=0;...) bin ich mir ziemlich sicher daß ich das früher schon verwendet hab (bitte um Korrektur und Link wenn es wirklich nicht gehen sollte!) und wäre bei C++ die Verwendung von cin und cout nicht printf und scanf vorzuziehen?

citizen428 06.05.2002 14:59

Hier noch ein Satz der mich in meinem Glauben daß Varibalendeklarationen innerhalb der for-Schleife zulässig sind, bestärkt:

"In C, a variable must be declared before it can be used. Variables can be declared at the start of any block of code,"

Wenn wer Genaueres bezüglich dieser Thematik in ANSI-C weiß dann wäre ich dankbar. Hab außer diesem Satz nicht viel gefunden, ehrlich gesagt hab ich aber auch nicht wirklich intensiv gesucht. Ist nur so aus Neugier...

Biri 06.05.2002 15:42

variablendeklaration
 
hallo !


Also ich hab ja schon echt lange nicht mehr in C(++) programmiert, aber wenn du mit "Variablenvereinbarungen gehen nicht in for-Schleifen in C" z.B. das meinst: for (int z=0;...)


ja genau das for (int z=0....) mein ich !


"In C, a variable must be declared before it can be used. Variables can be declared at the start of any block of code,"


soweit ich weiß, ist ein "block of code" in C:
{
// z.B. int i;
// block of code
}
ist aber auch schon länger her, dass ich ansi c programmiert habe (programmier dzt. nur visual c++ unter windows), bin mir aber trotzdem sicher, dass eine variablendeklaration innerhalb einer schleife in ansi C NICHT geht - will das jetzt aber nicht irgendwie beweisen oder danach suchen - soooo wichtig is ma das nicht.

cin und cout ist auch meiner meinung nach vorzuziehen, aber es ging ja um eine lösung in C, oder ? ;)

citizen428 06.05.2002 23:34

Re: variablendeklaration
 
Zitat:

Original geschrieben von Biri

1. soweit ich weiß, ist ein "block of code" in C:
{
// z.B. int i;
// block of code
}
2. cin und cout ist auch meiner meinung nach vorzuziehen, aber es ging ja um eine lösung in C, oder ? ;)

ad 1. Ich bin mir mittlerweile so gut wie sicher daß ich das 1. früher so gemacht habe und 2. das das in der for-Schleife auch ein "block of code" ist. Aber wie gesagt, wichtig ist es nicht, es hat mich dann nur interessiert.

ad 2. Schon, aber hat da dann nicht jemand gesagt: "genaugenommen ist mein lösungsvorschlag schon C++." ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag