4 Gewinnt in "C" programmieren ?

3 Antworten

Schreibe dir dazu eine Funktion, die nach jedem Setzen eines Steines aufgerufen wird (bzw. erst, nachdem mindestens vier Steine gesetzt wurden).

Die Funktion prüft jede Reihe und jede Spalte auf vier nebeneinanderliegende gleichfarbige Steine. Im Anschluss wird noch für jeden Stein geprüft, ob in den Feldern um ihn noch ein gleichfarbiger Stein liegt. Ist das der Fall, so wird rekursiv so lange weitergeprüft, bis vier gleichfarbige Steine diagonal gefunden wurden.

Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach. 

LG Willibergi 

Ich frage mich immer wieder, warum hier immer Fragen mit der grässlichen Konsole kommen, wenn ohnehin Windows im Programm verankert wird.

Du musst Dir doch irgendeine programmtechnische Darstellung der 8x7-Matrix vorgestellt haben?

Zur Vereinfachung kannst Du die Prüfung immer über alle Spalten, Zeilen und Diagonalen laufen lassen. Später kannst Du das einschränken auf den zuletzt gespielten Stein.

Zu setzt einen Merker auf "unbelegt" und einen Zähler auf 0.

Findest Du denselben Stein, inkrementierst Du den Zähler (ist er 4, hat die gemerkte Farbe gewonnen), ansonsten merkst Du Dir di neue Farbe und setzt den Zähler auf 1.

schreibe dazu einen kleinen Algorithmus der die umliegenden felder prüft.

bei einem oder mehren matches

hast du die richtung und prüfst dahin weiter

bei 4 matchs in folge steht ein sieger fest.

Java Spiel Fehler im Code?

Hallo,

Ich muss für die Schule in Java ein Code für ein Spiel schreiben. Hierbei habe ich mich für "Schere, Stein, Papier" mit 5 Varianten entschieden.

Für den Code habe ich lange gebraucht doch als ich endlich fertig war und ihn ausprobiert habe, habe ich keine Fehlermeldung bekommen - sprich der Code enthält 'in Java Sprache' keine Fehler.

Doch das Spiel funktioniert nicht!

Gibt es hier bereitwillige Spezialisten die mir helfen können meinen Fehler im Code zu finden?

Ich bin echt nicht gut in Informatik...

import java.awt.; import java.applet.; import java.util.Scanner;

public class KampfDerElemente extends Applet {

public static void main(String[] args) {

while(true) {

System.out.println("Sie haben die Wahl");

System.out.println("1 - Feuer");

System.out.println("2 - Wasser");

 System.out.println("3 - Luft");

 System.out.println("4 - Erde");

 System.out.println("5 - Elektro");

 Scanner input = new Scanner(System.in);

 int pcwahl;

 pcwahl = (int) (Math.random() * 5) + 1;

 int feuer = 1;

 int wasser = 2;

int luft = 3;

 int erde = 4;

 int elektro = 5;

if (input.nextInt() == pcwahl) {

System.out.println("Unentschieden!");}

if ((pcwahl == feuer) && (input.nextInt() == 3 || input.nextInt() == 5)){

System.out.println("Der Computer hat gewonnen!");

           }

else if (input.nextInt() == 2 || input.nextInt() == 4){

System.out.println("Sie haben gewonnen!");}

                    

           if ((pcwahl == wasser) && (input.nextInt() == 1 || input.nextInt() == 4)){

               System.out.println("Der Computer hat gewonnen!");}

                

               else if (input.nextInt() == 3 || input.nextInt() == 5){

                   System.out.println("Sie haben gewonnen!");}

                    

           if ((pcwahl == luft) && (input.nextInt() == 1 || input.nextInt() == 4)){

               System.out.println("Sie haben gewonnen!");}

                

               else if (input.nextInt() == 2 || input.nextInt() == 5){

                   System.out.println("Der Computer hat gewonnen!");}

                        

           if ((pcwahl == erde) && (input.nextInt() == 1 || input.nextInt() == 3)){

               System.out.println("Der Computer hat gewonnen!");}

                            

               else if (input.nextInt() == 2 || input.nextInt() == 5){

                   System.out.println("Sie haben gewonnen!");}

                    

           if ((pcwahl == elektro) && (input.nextInt() == 1 || input.nextInt() == 3)){

               System.out.println("Sie haben gewonnen!");}

                

               else if (input.nextInt() == 2 || input.nextInt() == 4){

                   System.out.println("Der Computer hat gewonnen!");}

                           }

                       }

                   }

LG Ollivoe

...zur Frage

Kann man potenzieren auch nur mit einer verschatelten for-schleife?

Hallo allerseits hier erstmal mein programm die frage stell ich zum schluss des textes

/--- #includes ------------------------------------------------------/

include <stdio.h>

/--- #defines -------------------------------------------------------/

/--- typedef-Datentypen ---------------------------------------------/

/--- Funktionsdefinitionen ------------------------------------------/

void text(void) {

printf("\nRechnen auf einer reinen Additions-Maschine\n");

printf("===========================================\n\n");

printf("0 Ende\n");

printf("1 Addition\n");

printf("2 Subtraktion\n");

printf("3 Multiplikation\n");

printf("4 Potenzierung\n\n");

printf("Was wuenschen Sie zu tun:");

}

int addition(zahl1,zahl2)

{

return(zahl1+zahl2);

}

int subtraktion(zahl1,zahl2)

{

return(zahl1-zahl2);

}

int multiplikation(int zahl1,int zahl2)

{

int i,ergebnis=0;

for(i=1;i<=zahl2;i++){

ergebnis+=zahl1;

}

return(ergebnis);

}

int potenzieren(int zahl1,int zahl2)

{

int i,j,produkt=1;

for(i=1;i<=zahl2;i++){

produkt=multiplikation(zahl1,produkt);

}

return(produkt);

}

int main( void )

{

int x,y;

char z;

while(1){

text();

z=getchar();

if(z=='0')

break;

else

switch (z){

case'1' :printf("Geben Sie zwei Zahlen mit Komma getrennt ein:");

                 scanf("%d,%d",&x,&y);

                 printf("-->%10d + %10d = %10d\n",x,y,addition(x,y));

                 getchar();

                break;

case'2' :printf("Geben Sie zwei Zahlen mit Komma getrennt ein:\n");

                   scanf("%d,%d",&x,&y);

                   printf("-->%10d - %10d = %10d",x,y,subtraktion(x,y));

                   getchar();

                  break;

case'3' :printf("Geben Sie zwei Zahlen mit Komma getrennt ein:\n");

            scanf("%d,%d",&x,&y);

            printf("-->%10d * %10d = %10d",x,y,multiplikation(x,y));

            getchar();

            break;

case'4' :printf("Geben Sie zwei Zahlen mit Komma getrennt ein:\n");

            scanf("%d,%d",&x,&y);

            printf("-->%2d^%d = %10d",x,y,potenzieren(x,y));

            getchar();

            break;

}

}

return 0; }

so jetzt zu meiner frage gibts vllt ne möglichkeit mein potenzieren auch mittels von 2 verschachtelten for-schleifenzu schreiben

bin euch für jede hilfe dankbar

...zur Frage

[HILFE] Java "Nim-Spiel" funktioniert nicht

Hallo, Wir sollen in der Schule das Nim-Spiel in Java schreiben. (Wer das Spiel nicht kennt: http://www.mathematische-basteleien.de/nimspiel.html)

Ich hab folgendes Problem: Wenn ich mein Programm starte, öffnet sich nicht das Eingabefenster (JOptionPane.showInputDialog...). Was habe ich falsch gemacht ?

Hier ist mein Quelltext (geschrieben in BlueJ):

import javax.swing.*;

public class Nim_Spiel { public static void main( String args[] ) { int haufen = 13; int x; int counter = 0;

    System.out.println("Es gibt 13 Streichhölzer. \nJeder Spieler darf nach der Reihe 1, 2 oder 3 Streichhölzer nehmen.\nDer Spieler, der das letzte Streichholz bekommt, hat gewonnen.");
    
    while (haufen <= 0)
    {
        counter++;
        
        if (counter%2 == 0)
        {
            String s = JOptionPane.showInputDialog("Spieler A ist an der Reihe. Wie viele Streichhölzer willst du nehmen ? (max. 3)");
            x = Integer.parseInt(s);
        }
        else 
        {
            String s = JOptionPane.showInputDialog("Spieler A ist an der Reihe. Wie viele Streichhölzer willst du nehmen ? (max. 3)");
            x = Integer.parseInt(s);
        }
        
                   
        if ((x > 0)&&(x < 4))
        {
            haufen = haufen - x;
            System.out.println("Es gibt noch " + haufen + " Streichhölzer.");
        }
        else
        {
            System.out.println("Cheater!");
        }         
    }
    
    if (haufen <= 0)
    {
      if (counter%2 == 0)
      {
          System.out.println("Spieler A hat gewonnen!");
      }
      else
      {
          System.out.println("Spieler B hat gewonnen!");
      }
    
    }
}

}

Danke schon mal im Vorraus :) !

...zur Frage

Was möchtest Du wissen?