Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Scanner;
- import java.util.concurrent.ThreadLocalRandom;
- public class Scopa {
- private static Scanner dd;
- public static int getCardVal(int k) {
- if (k == 0 | k == 10 | k == 20 | k == 30) {
- return 1;
- } else if (k == 1 | k == 11 | k == 21 | k == 31) {
- return 2;
- } else if (k == 2 | k == 12 | k == 22 | k == 32) {
- return 3;
- } else if (k == 3 | k == 13 | k == 23 | k == 33) {
- return 4;
- } else if (k == 4 | k == 14 | k == 24 | k == 34) {
- return 5;
- } else if (k == 5 | k == 15 | k == 25 | k == 35) {
- return 6;
- } else if (k == 6 | k == 16 | k == 26 | k == 36) {
- return 7;
- } else if (k == 7 | k == 17 | k == 27 | k == 37) {
- return 8;
- } else if (k == 8 | k == 18 | k == 28 | k == 38) {
- return 9;
- } else if (k == 9 | k == 19 | k == 29 | k == 39) {
- return 10;
- } else {
- return 0;
- }
- }
- public static void princa(ArrayList<Integer> k, ArrayList<String> y,
- boolean z) {
- for (int a = 0; a < k.size(); a++) {
- int b = k.get(a);
- if (z) {
- System.out.print((a + 1) + " = ");
- }
- System.out.println(y.get(b));
- }
- }
- public static ArrayList<String> prin(ArrayList<Integer> k, boolean op) {
- ArrayList<String> x = new ArrayList<String>();
- StringBuilder cache = new StringBuilder();
- for (int a = 0; a < k.size(); a++) {
- cache.setLength(0);
- if (k.get(a) < 10) {
- if (k.get(a) == 9) {
- cache.append("(10) Re di denari");
- x.add(cache.toString());
- } else if (k.get(a) == 8) {
- cache.append("(9) Cavallo di denari");
- x.add(cache.toString());
- } else if (k.get(a) == 7) {
- cache.append("(8) Alfiere di denari");
- x.add(cache.toString());
- } else {
- cache.append(Integer.toString(a + 1) + " di denari");
- x.add(cache.toString());
- }
- } else if (k.get(a) < 20) {
- if (k.get(a) == 19) {
- cache.append("(10) Re di bastoni");
- x.add(cache.toString());
- } else if (k.get(a) == 18) {
- cache.append("(9) Cavallo di bastoni");
- x.add(cache.toString());
- } else if (k.get(a) == 17) {
- cache.append("(8) Alfiere di bastoni");
- x.add(cache.toString());
- } else {
- cache.append(Integer.toString(a - 9) + " di bastoni");
- x.add(cache.toString());
- }
- } else if (k.get(a) < 30) {
- if (k.get(a) == 29) {
- cache.append("(10) Re di spade");
- x.add(cache.toString());
- } else if (k.get(a) == 28) {
- cache.append("(9) Cavallo di spade");
- x.add(cache.toString());
- } else if (k.get(a) == 27) {
- cache.append("(8) Alfiere di spade");
- x.add(cache.toString());
- } else {
- cache.append(Integer.toString(a - 19) + " di spade");
- x.add(cache.toString());
- }
- } else if (k.get(a) < 40) {
- if (k.get(a) == 39) {
- cache.append("(10) Re di coppe");
- x.add(cache.toString());
- } else if (k.get(a) == 38) {
- cache.append("(9) Cavallo di coppe");
- x.add(cache.toString());
- } else if (k.get(a) == 37) {
- cache.append("(8) Alfiere di coppe");
- x.add(cache.toString());
- } else {
- cache.append(Integer.toString(a - 29) + " di coppe");
- x.add(cache.toString());
- }
- } else {
- System.out.println("Impossibile assegnare " + a);
- }
- }
- return x;
- }
- public static void scopa(String[] args) {
- dd = new Scanner(System.in);
- boolean neut = true;
- int use = 0;
- int scoop = 0;
- int scoop1 = 0;
- boolean can1 = true;
- boolean can2 = true;
- boolean can3 = false;
- boolean nocheck = true;
- boolean nocheck1 = true;
- boolean last = false;
- ArrayList<Integer> a = new ArrayList<Integer>();
- ArrayList<Integer> used = new ArrayList<Integer>();
- ArrayList<Integer> player = new ArrayList<Integer>();
- ArrayList<Integer> versus = new ArrayList<Integer>();
- ArrayList<String> cardName = new ArrayList<String>();
- ArrayList<Integer> cardValue = new ArrayList<Integer>();
- ArrayList<Integer> neutral = new ArrayList<Integer>();
- ArrayList<Integer> deckPlayer = new ArrayList<Integer>();
- ArrayList<Integer> deckVersus = new ArrayList<Integer>();
- for (int z = 0; z < 40; z++) {
- a.add(z);
- }
- for (int z1 = 0; z1 < 4; z1++) {
- for (int z = 0; z < 10; z++) {
- cardValue.add(z + 1);
- }
- }
- if (neut) {
- neut = false;
- for (int z = 0; z < 4; z++) {
- while (true) {
- int rand = ThreadLocalRandom.current().nextInt(1, 40);
- if (!used.contains(rand)) {
- neutral.add(rand);
- used.add(rand);
- break;
- }
- }
- }
- }
- cardName = prin(a, true);
- while (true) {
- if (used.size() == 40 & player.size() == 0 & versus.size() == 0) {
- if (last) {
- System.out.println("Il giocatore ha preso per ultimo!");
- for (int k = 0; k < neutral.size(); k++) {
- deckPlayer.add(neutral.get(k));
- }
- } else {
- System.out.println("L'avversario ha preso per ultimo!");
- for (int k = 0; k < neutral.size(); k++) {
- deckVersus.add(neutral.get(k));
- }
- }
- break;
- }
- can1 = true;
- can2 = true;
- can3 = false;
- nocheck = true;
- nocheck1 = true;
- if (player.size() == 0 & used.size() != 40) {
- for (int z = 0; z < 3; z++) {
- while (true) {
- int rand = ThreadLocalRandom.current().nextInt(1, 40);
- if (!used.contains(rand)) {
- player.add(rand);
- used.add(rand);
- break;
- }
- }
- }
- }
- if (versus.size() == 0 & used.size() != 40) {
- for (int z = 0; z < 3; z++) {
- while (true) {
- int rand = ThreadLocalRandom.current().nextInt(1, 40);
- if (!used.contains(rand)) {
- versus.add(rand);
- used.add(rand);
- break;
- }
- }
- }
- }
- System.out.println();
- System.out.println();
- princa(neutral, cardName, false);
- System.out.println("------------");
- princa(player, cardName, true);
- while (true) {
- try {
- System.out.print("Scegli quale carta usare [Da 1 a "
- + player.size() + "]: ");
- use = dd.nextInt();
- player.get(use - 1);
- break;
- } catch (java.lang.IndexOutOfBoundsException e) {
- }
- }
- use = use - 1;
- if (can1) {
- for (int k = 0; k < neutral.size(); k++) {
- if (getCardVal(neutral.get(k)) == getCardVal(player
- .get(use))) {
- System.out.println("Utilizzando "
- + cardName.get(player.get(use))
- + " hai raccolto "
- + cardName.get(neutral.get(k)));
- deckPlayer.add(neutral.get(k));
- deckPlayer.add(player.get(use));
- neutral.remove(k);
- can1 = false;
- nocheck = false;
- last = true;
- break;
- }
- }
- }
- if (can1) {
- for (int k = 0; k < neutral.size(); k++) {
- for (int j = 0; j < neutral.size(); j++) {
- if ((getCardVal(neutral.get(k)) + getCardVal(neutral
- .get(j))) == getCardVal(player.get(use))
- & k != j) {
- System.out.println("Utilizzando "
- + cardName.get(player.get(use))
- + " hai raccolto "
- + cardName.get(neutral.get(k)) + " e "
- + cardName.get(neutral.get(j)));
- deckPlayer.add(neutral.get(k));
- deckPlayer.add(neutral.get(j));
- deckPlayer.add(player.get(use));
- neutral.remove(k);
- neutral.remove(j - 1);
- can1 = false;
- nocheck = false;
- last = true;
- break;
- }
- }
- }
- }
- if (can1) {
- for (int q = 0; q < neutral.size(); q++) {
- for (int k = 0; k < neutral.size(); k++) {
- for (int j = 0; j < neutral.size(); j++) {
- if ((getCardVal(neutral.get(k))
- + getCardVal(neutral.get(j)) + getCardVal(neutral
- .get(q))) == getCardVal(player.get(use))
- & k != j & k != q & q != j) {
- System.out.println("Utilizzando "
- + cardName.get(player.get(use))
- + " hai raccolto "
- + cardName.get(neutral.get(k)) + " e "
- + cardName.get(neutral.get(j)) + " e "
- + cardName.get(neutral.get(q)));
- deckPlayer.add(neutral.get(k));
- deckPlayer.add(neutral.get(j));
- deckPlayer.add(neutral.get(q));
- deckPlayer.add(player.get(use));
- neutral.remove(k);
- neutral.remove(j - 1);
- neutral.remove(q - 2);
- can1 = false;
- last = true;
- nocheck = false;
- break;
- }
- }
- }
- }
- }
- if (can1) {
- for (int l = 0; l < neutral.size(); l++) {
- for (int q = 0; q < neutral.size(); q++) {
- for (int k = 0; k < neutral.size(); k++) {
- for (int j = 0; j < neutral.size(); j++) {
- if ((getCardVal(neutral.get(k))
- + getCardVal(neutral.get(j))
- + getCardVal(neutral.get(q)) + getCardVal(neutral
- .get(l))) == getCardVal(player
- .get(use))
- & k != j
- & k != q
- & q != j
- & l != k
- & l != q & l != j) {
- System.out.println("Utilizzando "
- + cardName.get(player.get(use))
- + " hai raccolto "
- + cardName.get(neutral.get(k))
- + " e "
- + cardName.get(neutral.get(j))
- + " e "
- + cardName.get(neutral.get(q))
- + " e "
- + cardName.get(neutral.get(l)));
- deckPlayer.add(neutral.get(k));
- deckPlayer.add(neutral.get(j));
- deckPlayer.add(neutral.get(q));
- deckPlayer.add(neutral.get(l));
- deckPlayer.add(player.get(use));
- neutral.remove(k);
- neutral.remove(j - 1);
- neutral.remove(q - 2);
- neutral.remove(l - 3);
- can1 = false;
- last = true;
- nocheck = false;
- break;
- }
- }
- }
- }
- }
- }
- if (can1) {
- for (int o = 0; o < neutral.size(); o++) {
- for (int l = 0; l < neutral.size(); l++) {
- for (int q = 0; q < neutral.size(); q++) {
- for (int k = 0; k < neutral.size(); k++) {
- for (int j = 0; j < neutral.size(); j++) {
- if ((getCardVal(neutral.get(k))
- + getCardVal(neutral.get(j))
- + getCardVal(neutral.get(q))
- + getCardVal(neutral.get(l)) + getCardVal(neutral
- .get(o))) == getCardVal(player
- .get(use))
- & k != j
- & k != q
- & q != j
- & l != k
- & l != q
- & l != j
- & o != l
- & 0 != q
- & o != j & o != k) {
- System.out.println("Utilizzando "
- + cardName.get(player.get(use))
- + " hai raccolto "
- + cardName.get(neutral.get(k))
- + " e "
- + cardName.get(neutral.get(j))
- + " e "
- + cardName.get(neutral.get(q))
- + " e "
- + cardName.get(neutral.get(l))
- + " e "
- + cardName.get(neutral.get(o)));
- deckPlayer.add(neutral.get(k));
- deckPlayer.add(neutral.get(j));
- deckPlayer.add(neutral.get(q));
- deckPlayer.add(neutral.get(l));
- deckPlayer.add(neutral.get(o));
- deckPlayer.add(player.get(use));
- neutral.remove(k);
- neutral.remove(j - 1);
- neutral.remove(q - 2);
- neutral.remove(l - 3);
- neutral.remove(o - 4);
- can1 = false;
- last = true;
- nocheck = false;
- break;
- }
- }
- }
- }
- }
- }
- }
- if (!nocheck & neutral.size() == 0) {
- System.out.println("Hai fatto scopa!");
- scoop++;
- }
- if (nocheck) {
- neutral.add(player.get(use));
- System.out.println("Inserito " + cardName.get(player.get(use))
- + " in campo");
- }
- player.remove(use);
- for (int op = 0; op < versus.size(); op++) {
- if (can2) {
- for (int k = 0; k < neutral.size(); k++) {
- if (getCardVal(neutral.get(k)) == getCardVal(versus
- .get(op))) {
- System.out.println("Utilizzando "
- + cardName.get(versus.get(op))
- + " ha raccolto "
- + cardName.get(neutral.get(k)));
- deckVersus.add(neutral.get(k));
- deckVersus.add(versus.get(op));
- neutral.remove(k);
- can2 = false;
- can3 = true;
- nocheck1 = false;
- last = false;
- break;
- }
- }
- }
- if (can2) {
- for (int k = 0; k < neutral.size(); k++) {
- for (int j = 0; j < neutral.size(); j++) {
- if ((getCardVal(neutral.get(k)) + getCardVal(neutral
- .get(j))) == getCardVal(versus.get(op))
- & k != j) {
- System.out.println("Utilizzando "
- + cardName.get(versus.get(op))
- + " ha raccolto "
- + cardName.get(neutral.get(k)) + " e "
- + cardName.get(neutral.get(j)));
- deckVersus.add(neutral.get(k));
- deckVersus.add(neutral.get(j));
- deckVersus.add(versus.get(op));
- neutral.remove(k);
- neutral.remove(j - 1);
- can2 = false;
- can3 = true;
- nocheck1 = false;
- last = false;
- break;
- }
- }
- }
- }
- if (can2) {
- for (int q = 0; q < neutral.size(); q++) {
- for (int k = 0; k < neutral.size(); k++) {
- for (int j = 0; j < neutral.size(); j++) {
- if ((getCardVal(neutral.get(k))
- + getCardVal(neutral.get(j)) + getCardVal(neutral
- .get(q))) == getCardVal(versus
- .get(op))
- & k != j & k != q & q != j) {
- System.out.println("Utilizzando "
- + cardName.get(versus.get(op))
- + " ha raccolto "
- + cardName.get(neutral.get(k))
- + " e "
- + cardName.get(neutral.get(j))
- + " e "
- + cardName.get(neutral.get(q)));
- deckVersus.add(neutral.get(k));
- deckVersus.add(neutral.get(j));
- deckVersus.add(neutral.get(q));
- deckVersus.add(versus.get(op));
- neutral.remove(k);
- neutral.remove(j - 1);
- neutral.remove(q - 2);
- can2 = false;
- can3 = true;
- last = false;
- nocheck1 = false;
- break;
- }
- }
- }
- }
- }
- if (can2) {
- for (int l = 0; l < neutral.size(); l++) {
- for (int q = 0; q < neutral.size(); q++) {
- for (int k = 0; k < neutral.size(); k++) {
- for (int j = 0; j < neutral.size(); j++) {
- if ((getCardVal(neutral.get(k))
- + getCardVal(neutral.get(j))
- + getCardVal(neutral.get(q)) + getCardVal(neutral
- .get(l))) == getCardVal(versus
- .get(op))
- & k != j
- & k != q
- & q != j
- & l != k
- & l != q & l != j) {
- System.out.println("Utilizzando "
- + cardName.get(versus.get(op))
- + " ha raccolto "
- + cardName.get(neutral.get(k))
- + " e "
- + cardName.get(neutral.get(j))
- + " e "
- + cardName.get(neutral.get(q))
- + " e "
- + cardName.get(neutral.get(l)));
- deckVersus.add(neutral.get(k));
- deckVersus.add(neutral.get(j));
- deckVersus.add(neutral.get(q));
- deckVersus.add(neutral.get(l));
- deckVersus.add(versus.get(op));
- neutral.remove(k);
- neutral.remove(j - 1);
- neutral.remove(q - 2);
- neutral.remove(l - 3);
- can2 = false;
- can3 = true;
- last = false;
- nocheck1 = false;
- break;
- }
- }
- }
- }
- }
- }
- if (can2) {
- for (int o = 0; o < neutral.size(); o++) {
- for (int l = 0; l < neutral.size(); l++) {
- for (int q = 0; q < neutral.size(); q++) {
- for (int k = 0; k < neutral.size(); k++) {
- for (int j = 0; j < neutral.size(); j++) {
- if ((getCardVal(neutral.get(k))
- + getCardVal(neutral.get(j))
- + getCardVal(neutral.get(q))
- + getCardVal(neutral.get(l)) + getCardVal(neutral
- .get(o))) == getCardVal(versus
- .get(op))
- & k != j
- & k != q
- & q != j
- & l != k
- & l != q
- & l != j
- & o != l
- & 0 != q
- & o != j
- & o != k) {
- System.out.println("Utilizzando "
- + cardName.get(versus
- .get(op))
- + " ha raccolto "
- + cardName.get(neutral
- .get(k))
- + " e "
- + cardName.get(neutral
- .get(j))
- + " e "
- + cardName.get(neutral
- .get(q))
- + " e "
- + cardName.get(neutral
- .get(l))
- + " e "
- + cardName.get(neutral
- .get(o)));
- deckVersus.add(neutral.get(k));
- deckVersus.add(neutral.get(j));
- deckVersus.add(neutral.get(q));
- deckVersus.add(neutral.get(l));
- deckVersus.add(neutral.get(o));
- deckVersus.add(versus.get(op));
- neutral.remove(k);
- neutral.remove(j - 1);
- neutral.remove(q - 2);
- neutral.remove(l - 3);
- neutral.remove(o - 4);
- can2 = false;
- can3 = true;
- last = false;
- nocheck1 = false;
- break;
- }
- }
- }
- }
- }
- }
- }
- if (!nocheck1 & neutral.size() == 0) {
- System.out.println("L'avversario ha fatto scopa!");
- scoop1++;
- }
- if (can3) {
- break;
- }
- }
- if (nocheck1) {
- int rand = ThreadLocalRandom.current()
- .nextInt(1, versus.size());
- neutral.add(versus.get(rand));
- System.out.println("Inserito " + cardName.get(versus.get(rand))
- + " in campo");
- }
- }
- int den = 0;
- boolean sev = false;
- System.out.println("Deck Giocatore : " + deckPlayer.size() + " "
- + "Deck Avversario : " + deckVersus.size());
- for (int m = 0; m < player.size(); m++) {
- if (player.get(m) < 10) {
- den++;
- }
- }
- System.out.println("Denari Giocatore : " + den + " "
- + "Denari Avversario : " + (10 - den));
- for (int m = 0; m < player.size(); m++) {
- if (player.get(m) == 6) {
- sev = true;
- }
- }
- if (sev) {
- System.out.println("Denari Giocatore : X Denari Avversario : ");
- } else {
- System.out.println("Denari Giocatore : Denari Avversario : X");
- }
- System.out.println("Scope Giocatore : " + scoop + " "
- + "Scope Avversario : " + scoop1);
- }
- public static void main(String[] args) {
- while (true) {
- scopa(args);
- for (int a = 0; a < 1000; a++) {
- System.out.println();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement