Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Yacked2, 13.4.2014
- */
- import java.util.Arrays;
- import java.util.Scanner;
- public class v2 {
- public static void main(String[] args) {
- //Spremenljivke
- String smer = "Sever"; //kam je obrnjena kaca
- //scanner
- Scanner novo = new Scanner(System.in);
- System.out.println("Sirina polja: ");
- int b = novo.nextInt();
- System.out.println("Visina polja: ");
- int a = novo.nextInt();
- //int a = 10; //visina polja
- //int b = 20; //sirina polja
- boolean hrana = false; //ali je kje hrana
- int[] cokolada = new int[2]; //kje je hrana
- int kacaX = b/2;
- int kacaY = a/2;
- int[][] snake = {{kacaX,kacaY},{kacaX,kacaY-1}}; //zacetna kaca
- int[][] polja = new int[a][b];
- int n=1; //koliko premikov smo že naredili
- int cleni= 2;
- Izpis(snake,polja,hrana,cokolada);
- while(true)
- {
- //ustvarjanje hrane
- if(n % 5 ==0 && hrana == false)
- {
- hrana = true;
- cokolada = UstvariHrano(cokolada,polja,snake);
- //System.out.println(cokolada[0] + " "+ cokolada[1]);
- }
- //spremenimo smer
- smer = NovaSmer(smer);
- int[][] OldSnake = snake.clone();// new int[snake.length][2];
- //System.arraycopy( snake, 0, OldSnake, 0, snake.length );
- //se premaknemo za eno polje
- snake = Premik(snake,smer);
- //ali se hranimo
- if(hrana)
- {
- boolean hranjenje = AliJem(cokolada,snake);
- if(hranjenje)
- {
- //hranimo se!
- hrana = false;
- snake = Pojej(OldSnake,cokolada);
- cleni++;
- }
- }
- boolean veljavnost = Preveri(snake,a,b);
- if(veljavnost)
- {
- //izpisemo
- Izpis(snake,polja,hrana,cokolada);
- }
- else
- {
- System.out.println("Konec igre! Dolzina kace: " + cleni);
- System.exit(0);
- }
- n++;
- }
- }
- private static void Izpis(int[][] snake, int[][] polja, boolean hrana, int[] cokolada)
- {
- for(int i=polja.length-1; i>=0;i--)
- {
- //for(int n=polja[i].length-1; n>=0;n--)
- for(int n=0; n < polja[i].length;n++)
- {
- int x = n;
- int y = i;
- int[] kvadrat = {x,y};
- if(hrana==true && Arrays.equals(kvadrat, cokolada))
- {
- System.out.print("H ");
- }
- else
- {
- boolean prazno = true;
- for(int[] telo : snake)
- {
- if(Arrays.equals(telo, kvadrat))
- {
- prazno = false;
- break;
- }
- }
- if(prazno)
- {
- System.out.print("0 ");
- }
- else
- {
- if(Arrays.equals(kvadrat, snake[0])) //glava
- {
- System.out.print("2 ");
- }
- else
- {
- System.out.print("1 ");
- }
- }
- }
- }
- System.out.println();
- }
- }
- private static boolean Preveri(int[][] snake, int a, int b) {
- for(int i=0; i < snake.length;i++)
- {
- int[] primera = snake[i];
- for(int n=i+1; n < snake.length;n++)
- {
- if(Arrays.equals(primera, snake[n]))
- {
- return false;
- }
- }
- }
- for(int i=0; i < snake.length;i++)
- {
- int x = snake[i][0];
- int y = snake[i][1];
- if(x < 0 || y < 0 || x >= b || y >=a)
- {
- return false;
- }
- }
- return true;
- }
- private static int[][] Pojej(int[][] snake, int[] cokolada)
- {
- int[][] NovoTelo = new int[snake.length+1][2];
- NovoTelo[0] = cokolada;
- for(int i=1;i<NovoTelo.length;i++)
- {
- NovoTelo[i] = snake[i-1];
- }
- return NovoTelo;
- }
- private static int[][] Premik(int[][] snake, String smer)
- {
- int staraGlavaX = snake[0][0];
- int staraGlavaY = snake[0][1];
- int novaX = snake[0][0];
- int novaY = snake[0][1];
- if(smer.equals("Sever"))
- {
- novaY++;
- }
- else if(smer.equals("Vzhod"))
- {
- novaX--;
- }
- else if(smer.equals("Jug"))
- {
- novaY--;
- }
- else if(smer.equals("Zahod"))
- {
- novaX++;
- }
- int[][] NovTrup = new int[snake.length][2];
- NovTrup[0][0] = novaX;
- NovTrup[0][1] = novaY;
- NovTrup[1][0] = staraGlavaX;
- NovTrup[1][1] = staraGlavaY;
- for(int i=2;i < NovTrup.length;i++)
- {
- NovTrup[i][0] = snake[i-1][0];
- NovTrup[i][1] = snake[i-1][1];
- }
- return NovTrup;
- }
- private static boolean AliJem(int[] cokolada, int[][] snake)
- {
- if( cokolada ==null ||cokolada.length==0)
- {
- return false;
- }
- else
- {
- for(int[] del : snake)
- {
- if(Arrays.equals(del, cokolada))
- {
- return true;
- }
- }
- //hrana obstaja, ali se kakšen
- return false;
- }
- }
- private static int[] UstvariHrano(int[] cokolada, int[][] polja, int[][] snake)
- {
- //ustvarimo hrano nekje v polju, ki je prazno
- while(true)
- {
- int Y = (int)(Math.random()*polja.length);
- int X = (int)(Math.random()*polja[0].length);
- int[] tocka = {X,Y};
- for(int[] telo : snake)
- {
- //če je na tem polju že kakšen del kače
- if(Arrays.equals(telo,tocka))
- {
- break;
- }
- else
- {
- return tocka;
- }
- }
- }
- }
- private static String NovaSmer(String smer)
- {
- Scanner sc = new Scanner(System.in);
- String premik = sc.nextLine();
- //nova smer
- if(smer.equals("Sever") && premik.equals("l"))
- {
- smer="Vzhod";
- }
- else if(smer.equals("Sever") && premik.equals("d"))
- {
- smer="Zahod";
- }
- else if(smer.equals("Vzhod") && premik.equals("d"))
- {
- smer="Sever";
- }
- else if(smer.equals("Vzhod") && premik.equals("l"))
- {
- smer="Jug";
- }
- else if(smer.equals("Jug") && premik.equals("d"))
- {
- smer="Vzhod";
- }
- else if(smer.equals("Jug") && premik.equals("l"))
- {
- smer="Zahod";
- }
- else if(smer.equals("Zahod") && premik.equals("d"))
- {
- smer="Jug";
- }
- else if(smer.equals("Zahod") && premik.equals("l"))
- {
- smer="Sever";
- }
- return smer;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement