From 5f1294e89468841f1e1396cb39af873993826cf7 Mon Sep 17 00:00:00 2001 From: Miguel Date: Tue, 6 Apr 2021 12:21:43 +0200 Subject: Initial commit for Mastermind --- FranekEngine.java | 212 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ MiguelEngine.java | 62 ++++++++++++++++ run.sh | 19 +++++ 3 files changed, 293 insertions(+) create mode 100755 FranekEngine.java create mode 100644 MiguelEngine.java create mode 100644 run.sh diff --git a/FranekEngine.java b/FranekEngine.java new file mode 100755 index 0000000..d69591b --- /dev/null +++ b/FranekEngine.java @@ -0,0 +1,212 @@ +import java.util.Random; +import java.util.Scanner; + +public class FranekEngine { + + public static void main (String args[]) + { + + int liczba1=Integer.parseInt(args[0]); + int liczba2=Integer.parseInt(args[1]); + int liczba3=Integer.parseInt(args[2]); + int liczba4=Integer.parseInt(args[3]); + + int odpowiedz1=Integer.parseInt(args[4]); + int odpowiedz2=Integer.parseInt(args[5]); + int odpowiedz3=Integer.parseInt(args[6]); + int odpowiedz4=Integer.parseInt(args[7]); + + + Scanner wejscie = new Scanner(System.in); + Random losowanie = new Random(); +// int liczba1 = losowanie.nextInt(5) + 1; +// int liczba2 = losowanie.nextInt(5) + 1; +// int liczba3 = losowanie.nextInt(5) + 1; +// int liczba4 = losowanie.nextInt(5) + 1; + + // do ustawiania samemu wartości - do testów: + /*liczba1 = 1; + liczba2 = 1; + liczba3 = 3; + liczba4 = 3; */ + + int kolor1 = 0, kolor2 = 0, czerwoneLiczb = 0, zieloneLiczb = 0, niebieskieLiczb = 0, żółteLiczb = 0, czarneLiczb = 0, białeLiczb = 0; + int czerwoneOdp = 0, zieloneOdp = 0, niebieskieOdp = 0, żółteOdp = 0, czarneOdp = 0, białeOdp = 0; + int licznik = 0; + + int dobremiejsce = 0; + int dobrykolor = 0; + + //ściągawka to testów: + // System.out.println(jakiKolor(liczba1) + " " + jakiKolor(liczba2) + " " + jakiKolor(liczba3) + " " + // + jakiKolor(liczba4)); + + // System.out.println("KOLORY: " + " " + "Czerwony: 1" + " " + "Zielony: 2" + " " + "Niebieski: 3" + // + " " + "Żółty: 4" + " " + "Czarny: 5" + " " + "Biały: 6"); + + +// do { + // System.out.println("Wprowadź cztery kolory (pod jednym odstępie między nimi):"); + // int odpowiedz1 = wejscie.nextInt(); +// int odpowiedz2 = wejscie.nextInt(); +// int odpowiedz3 = wejscie.nextInt(); +// int odpowiedz4 = wejscie.nextInt(); + + if (liczba1 == odpowiedz1) + dobremiejsce += 1; + else if ((liczba1 == odpowiedz2) || (liczba1 == odpowiedz3) || (liczba1 == odpowiedz4)) + dobrykolor += 1; + + if (liczba2 == odpowiedz2) + dobremiejsce += 1; + else if ((liczba2 == odpowiedz1) || (liczba2 == odpowiedz3) || (liczba2 == odpowiedz4)) + dobrykolor += 1; + + if (liczba3 == odpowiedz3) + dobremiejsce += 1; + else if ((liczba3 == odpowiedz1) || (liczba3 == odpowiedz2) || (liczba3 == odpowiedz4)) + dobrykolor += 1; + + if (liczba4 == odpowiedz4) + dobremiejsce += 1; + else if ((liczba4 == odpowiedz1) || (liczba4 == odpowiedz2) || (liczba4 == odpowiedz3)) + dobrykolor += 1; + + int[] liczby = new int[4]; + liczby[0] = liczba1; + liczby[1] = liczba2; + liczby[2] = liczba3; + liczby[3] = liczba4; + + for (int index = 0; index < liczby.length; index++) { + kolor1 = liczby[index]; + + switch (kolor1) { + case 1 : + czerwoneLiczb++; + break; + case 2 : + zieloneLiczb++; + break; + case 3 : + niebieskieLiczb++; + break; + case 4 : + żółteLiczb++; + break; + case 5 : + czarneLiczb++; + break; + case 6 : + białeLiczb++; + break; + } + } + + int[] odpowiedzi = new int[4]; + odpowiedzi[0] = odpowiedz1; + odpowiedzi[1] = odpowiedz2; + odpowiedzi[2] = odpowiedz3; + odpowiedzi[3] = odpowiedz4; + + for (int index = 0; index < odpowiedzi.length; index++) { + kolor2 = odpowiedzi[index]; + + switch (kolor2) { + case 1: + czerwoneOdp++; + break; + case 2: + zieloneOdp++; + break; + case 3: + niebieskieOdp++; + break; + case 4: + żółteOdp++; + break; + case 5: + czarneOdp++; + break; + case 6: + białeOdp++; + break; + } + } + + /*System.out.println("Odpowiedzi: " + czerwoneLiczb + " " + zieloneLiczb + " " + niebieskieLiczb + " " + + żółteLiczb + " " + czarneLiczb + " " + białeLiczb + " " + czerwoneOdp + " " + zieloneOdp + " " + + niebieskieOdp + " " + żółteOdp + " " + czarneOdp + " " + białeOdp); + + System.out.println("Dobry kolor przed: " + dobrykolor); */ + + //System.out.println("Dobre miejsce1: " + dobremiejsce + "\n" + "Dobry kolor1: " + dobrykolor); + if (( (czerwoneLiczb == 2 && zieloneLiczb == 2) || (czerwoneLiczb == 2 && niebieskieLiczb == 2) || (czerwoneLiczb == 2 && żółteLiczb == 2) || (czerwoneLiczb == 2 && czarneLiczb == 2) + || (czerwoneLiczb == 2 && białeLiczb == 2) || (zieloneLiczb == 2 && niebieskieLiczb == 2) || (zieloneLiczb == 2 && żółteLiczb == 2) || (zieloneLiczb == 2 && czarneLiczb == 2 ) + || (zieloneLiczb == 2 && białeLiczb == 2) || (niebieskieLiczb == 2 && żółteLiczb == 2) || (niebieskieLiczb == 2 && czarneLiczb == 2) || (niebieskieLiczb == 2 && białeLiczb == 2) + || (żółteLiczb == 2 && czarneLiczb == 2) || (żółteLiczb == 2 && białeLiczb == 2) || (czarneLiczb == 2 && białeLiczb == 2)) + && (((dobrykolor == 3) || (dobremiejsce == 1 && dobrykolor == 2)) && !(czerwoneOdp == 3 || zieloneOdp == 3 || niebieskieOdp == 3 || żółteOdp == 3 || czarneOdp == 3 || białeOdp == 3))) + dobrykolor -= 1; + + // if (((czerwoneLiczb > 1 && czerwoneLiczb - czerwoneOdp == 1) || (zieloneLiczb > 1 && zieloneLiczb - zieloneOdp == 1) || (niebieskieLiczb > 1 && niebieskieLiczb - niebieskieOdp == 1) + // || (żółteLiczb > 1 && żółteLiczb - żółteOdp == 1) || (czarneLiczb > 1 && czarneLiczb - czarneOdp == 1) || (białeLiczb > 1 && białeLiczb - białeOdp == 1))) + // dobrykolor -= 1; + else if (((czerwoneLiczb - czerwoneOdp == 2 && czerwoneOdp > 0) || (zieloneLiczb - zieloneOdp == 2 && zieloneOdp > 0) || (niebieskieLiczb - niebieskieOdp == 2 && niebieskieOdp > 0)) + || (żółteLiczb - żółteOdp == 2 && żółteOdp > 0) || (czarneLiczb - czarneOdp == 2 && czarneOdp > 0) || (białeLiczb - białeOdp == 2 && białeOdp > 0)) + dobrykolor -= 2; + + //System.out.println("Dobre miejsce2: " + dobremiejsce + "\n" + "Dobry kolor2: " + dobrykolor); + + if (( (czerwoneLiczb == 2 && zieloneLiczb == 2) || (czerwoneLiczb == 2 && niebieskieLiczb == 2) || (czerwoneLiczb == 2 && żółteLiczb == 2) || (czerwoneLiczb == 2 && czarneLiczb == 2) + || (czerwoneLiczb == 2 && białeLiczb == 2) || (zieloneLiczb == 2 && niebieskieLiczb == 2) || (zieloneLiczb == 2 && żółteLiczb == 2) || (zieloneLiczb == 2 && czarneLiczb == 2 ) + || (zieloneLiczb == 2 && białeLiczb == 2) || (niebieskieLiczb == 2 && żółteLiczb == 2) || (niebieskieLiczb == 2 && czarneLiczb == 2) || (niebieskieLiczb == 2 && białeLiczb == 2) + || (żółteLiczb == 2 && czarneLiczb == 2) || (żółteLiczb == 2 && białeLiczb == 2) || (czarneLiczb == 2 && białeLiczb == 2)) + && (((dobrykolor == 3) || (dobremiejsce == 1 && dobrykolor == 2)) && !(czerwoneOdp == 3 || niebieskieOdp == 3) || żółteOdp == 3 || czarneOdp == 3 || białeOdp == 3)) + dobrykolor -= 1; + + if (dobrykolor < 0) + dobrykolor = 0; + + System.out.println(dobremiejsce + " " + dobrykolor); + if (dobremiejsce == 4) { + dobremiejsce = 4; +// System.out.println("Brawo, wygrałeś!"); + } else + dobremiejsce = 0; + dobrykolor = 0; + + czerwoneLiczb = 0; zieloneLiczb = 0; niebieskieLiczb = 0; żółteLiczb = 0; czarneLiczb = 0; białeLiczb = 0; + czerwoneOdp = 0; zieloneOdp = 0; niebieskieOdp = 0; żółteOdp = 0; czarneOdp = 0; białeOdp = 0; + licznik++; + // if (licznik == 8) + // System.out.println("Przykro mi - przegrałeś."); + // } +// while (dobremiejsce != 4 && licznik != 8); + } + + public static String jakiKolor(int liczba) + { + String kolor = ""; + switch (liczba) { + case 1 : + kolor = "Czerwony"; + break; + case 2 : + kolor = "Zielony"; + break; + case 3 : + kolor = "Niebieski"; + break; + case 4 : + kolor = "Żółty"; + break; + case 5 : + kolor = "Czarny"; + break; + case 6 : + kolor = "Biały"; + break; + } + return kolor; + } +} diff --git a/MiguelEngine.java b/MiguelEngine.java new file mode 100644 index 0000000..bc11748 --- /dev/null +++ b/MiguelEngine.java @@ -0,0 +1,62 @@ +public class MiguelEngine{ + + static int M=4; + + public static void main(String []args){ + + int S[]={Integer.parseInt(args[0]),Integer.parseInt(args[1]),Integer.parseInt(args[2]),Integer.parseInt(args[3])}; // nasz kod + int T[]={Integer.parseInt(args[4]),Integer.parseInt(args[5]),Integer.parseInt(args[6]),Integer.parseInt(args[7])}; // nasz kod + + int dobry_kolor_i_dobra_pozycja=0; + int dobry_kolor_ale_zla_pozycja=0; + int dupa_nigdzie_nie_pasuje=0; + + boolean used[]=new boolean[M+1]; // array pomocniczy Boolow, dlugosci M. + for (int i=0;i sprawa prosta + { + dobry_kolor_i_dobra_pozycja+=1; + used[i]=true; // dodatkowo oznaczymy ze ta pozycja naszego "kolor-kodu" zostala "sonkumowana" + } + } + + for (int i=0;i