Gra w oczko, pomoc

0
import java.util.Scanner;
import java.util.Random;
public class oczko {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int dziewiatka = 0;
		int dziesiatka = 10;
		int walet = 2;
		int dama = 3;
		int krol = 4;
		int as = 11;
		
		int [][] tablica = new int [4][6];
		tablica [0][0] = dziewiatka;
		tablica [0][1] = dziesiatka;
		tablica [0][2] = walet;
		tablica [0][3] = dama;
		tablica [0][4] = krol;
		tablica [0][5] = as;
		tablica [1][0] = dziewiatka;
		tablica [1][1] = dziesiatka;
		tablica [1][2] = walet;
		tablica [1][3] = dama;
		tablica [1][4] = krol;
		tablica [1][5] = as;
		tablica [2][0] = dziewiatka; 
		tablica [2][0] = dziesiatka;
		tablica [2][0] = walet;
		tablica [2][0] = dama;
		tablica [2][0] = krol;
		tablica [2][0] = as;
		tablica [3][0] = dziewiatka;
		tablica [3][1] = dziesiatka;
		tablica [3][2] = walet;
		tablica [3][3] = dama;
		tablica [3][4] = krol;
		tablica [3][5] = as;

		System.out.println("Witaj w grze w oczko:");

		int a = (int) Math.random()*3;
		int b = (int) Math.random()*5;

		int wynik= tablica[a][b];

		System.out.println("Twoja liczba to:"+ wynik);
	}
}

Na razie jetem w tym momencie, nie wiem dlaczego wylosowana liczba to zawsze 0.

usunięcie zbędnych pustych linii z kodu - fp

0

Bo random zwraca wartość od <0, 1.0), Ty ją rzutujesz na inta - zawsze 0, a dopiero później mnożysz - ciągle 0. Weź wyrażenie w nawias.

0
package cardgame;

class Card {

  private Integer value;
  private String name;
  private String color;

  public Card(Integer v, String n, String c) {
    value = v;
    name = n;
    color = c;
  }

  public Card(Card pattern){
    value=pattern.getValue();
    name=pattern.getName();
    color=pattern.getColor();
  }

  Integer getValue() {
    return new Integer(value);
  }

  String getName() {
    return new String(name);
  }

  String getColor() {
    return new String(color);
  }
}


package cardgame;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;

class Deck implements Iterable {
  private List<Card> deck = new LinkedList<Card>();

  public void add(Card c) //dodawania karty do talii
    {
      deck.add(c);
    }

    Card popCard() //wyciąganie karty z talii
    {
      Random r = new Random();
      int index = r.nextInt(deck.size());
      Card tmp = new Card(deck.get(index));
      deck.remove(index);
      return tmp;
    }

    void createFull()
    {
      String[] kolory= new String[]{"kier","karo","pik","trefl"};
      String[] figury=new String[]{"2","3","4","5","6","7","8","9","10","Walet","Dama","Krol","As"};

      for (int i=0;i<4;i++)
        {
          for (int j=0;j<9;j++) //2-10
            {
              Card tmp = new Card(j+2,figury[j],kolory[i]); //generujemy kartę
              deck.add(tmp); //dodajemy do talii
            }
          for (int j=9;j<12;j++) //walet, dama, krol
            {
              Card tmp=new Card(j-7,figury[j],kolory[i]); //generujemy kartę
              deck.add(tmp); //dodajemy do talii
            }
          Card tmp=new Card(11,figury[12],kolory[i]); //as
          deck.add(tmp); //dodajemy do talii
        }
    }

    Integer getValue() //funkcja zwraca wartość wszystkich kart w talii
    {
      Integer sum = 0;
      for (Card c : deck)
        sum+=c.getValue();
      return sum;
    }

    boolean isEmpty()
      {
        return deck.isEmpty();
      }

  public Iterator iterator() {
    return deck.iterator();
  }

  @Override
  public String toString(){
      String retval = new String();
      for(Iterator<Card> it = this.iterator();it.hasNext();){
        Card karta = new Card(it.next());
        retval+=karta.getValue()+" "+karta.getName()+" "+karta.getColor()+"\n";
      }
      retval+="W sumie "+this.getValue()+"\n";
      return retval;
  }
}


package cardgame;

public class Main {

  public static void main(String[] args) {

    Deck talia = new Deck();
    Deck gracz1 = new Deck();
    Deck gracz2 = new Deck();
    talia.createFull();

    while ((gracz1.getValue() <= 21) && (gracz2.getValue() <= 21)) {
      gracz1.add(talia.popCard());
      if (gracz1.getValue() <= 21) {
        gracz2.add(talia.popCard());
      }
    }


    if (gracz1.getValue() == 21) {
      if (gracz2.getValue() == 21) {
        System.out.println("Remis");

        System.out.println("\nKarty 1:\n" + gracz1);
        System.out.println("\nKarty 2:\n" + gracz2);
      } else {
        System.out.println("Wygrywa 1");
        System.out.println("\nKarty 1:\n" + gracz1);
        System.out.println("\nKarty 2:\n" + gracz2);
      }
    } else if (gracz2.getValue() == 21) {
      System.out.println("Wygrywa 2");
      System.out.println("\nKarty 1:\n" + gracz1);
      System.out.println("\nKarty 2:\n" + gracz2);
    } else if (gracz1.getValue() > 21) {
      System.out.println("Wygrywa 2");
      System.out.println("\nKarty 1:\n" + gracz1);
      System.out.println("\nKarty 2:\n" + gracz2);
    } else {
      System.out.println("Wygrywa 1");
      System.out.println("\nKarty 1:\n" + gracz1);
      System.out.println("\nKarty 2:\n" + gracz2);
    }

  }
}
0
double a =  Math.random()*10;
		a = Math.round(a);
		System.out.println(a);

pamiętaj że random daje double z małych przedziałów

0

a jak zaimplementować instrukcję for, która po kazdej petli bedzie pytac czy wykonac nastepna petle?

0
import java.util.Scanner;
import java.util.Random;
public class oczko {

	public static void main(String[] args) {
		
		
		int dziewiatka = 0;
		int dziesiatka = 10;
		int walet = 2;
		int dama = 3;
		int krol = 4;
		int as = 11;
		
		int [][] tablica = new int [4][6];
		tablica [0][0] = dziewiatka;
		tablica [0][1] = dziesiatka;
		tablica [0][2] = walet;
		tablica [0][3] = dama;
		tablica [0][4] = krol;
		tablica [0][5] = as;
		tablica [1][0] = dziewiatka;
		tablica [1][1] = dziesiatka;
		tablica [1][2] = walet;
		tablica [1][3] = dama;
		tablica [1][4] = krol;
		tablica [1][5] = as;
		tablica [2][0] = dziewiatka; 
		tablica [2][0] = dziesiatka;
		tablica [2][0] = walet;
		tablica [2][0] = dama;
		tablica [2][0] = krol;
		tablica [2][0] = as;
		tablica [3][0] = dziewiatka;
		tablica [3][1] = dziesiatka;
		tablica [3][2] = walet;
		tablica [3][3] = dama;
		tablica [3][4] = krol;
		tablica [3][5] = as;

		
		
		
		
		int suma=0;
		System.out.println("Witaj w grze w oczko:");
		do
		{
			int a = (int) ((Math.random()*3));
			int b = (int) ((Math.random()*5));
			int wynik = tablica[a][b];
			System.out.println("Punkty za wylosowana karte:"+ wynik);
			suma = suma+wynik;
			tablica [a][b]=0;
			
		}
		while (suma < 21);
		System.out.println("Suma:"+ suma);
		
		String wynik1;
		if ( suma == 21	) wynik1 = "Zwyciezyles!";
		else wynik1 = "Przegrales";
		
		System.out.println ("Wynik:" +wynik1);
		
	
	}

}
0

weź nie bierz się jeszcze za jave, postudiuj C/C++ i jego podstawy albo podstawy Javy. Moderator mógłby przenieść do działu newbie

0

Studiuję kierunek, gdzie programowanie jest farmazonem i w życiu mi się nie przyda, ale zaczęliśmy od javy. Gdyby ktoś poprawił kod za mnie znacznie uprościło by mi to wieczór.

0

kierunek jest zwiazany z IT, zarzadzanie i inzynieria produkcji, ktory jest rozleglym tematem ale akurat programowanie mnie nie interesuje

btw. kod działa dobrze

0

chce zajmować sie implemetnacja norm ISO w firmach, albo pójść całkowicie w management (studiuję jeszcze na uczelni eknomicznej)

1 użytkowników online, w tym zalogowanych: 0, gości: 1