Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Muhammet Can *
- * 091101025 *
- * ödev2 *
- * *
- * Girilen verilere göre avcı avı köşeye sıkıştırıp yakalar. *
- * *
- * Ancak avcıyı daha zeki yapabilecek bir şekilde geliştiremedim. Matematiksel *
- * olarak çözümü buldum ama koda dökemedim. Avcı bazı durumlarda, avı kenarlara daha *
- * çabuk sıkıştırabilecekken, malesef default ayarlara göre kovalamaya devam ediyor. *
- * *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- import java.util.*;
- class oyun {
- public int sutun, satir, preyX, preyY, hunterX, hunterY;
- public double araMesafe;
- public int count;
- public void gridOlustur() {
- //----------------------- ilk 1234..n döngüsü -----------------------|
- System.out.print(" ");
- for (int i=0; i<sutun; i++) {
- if (i>8) {
- System.out.print(i+1+" ");
- } else {
- System.out.print(" "+(i+1)+" ");
- }
- }
- //----------------------- ilk 1234..n döngüsü(bitimi) -----------------------|
- System.out.println("");
- //----------------------- ikinci kısım iç içe loop -----------------------|
- for (int j=0; j<satir; j++) {
- //----------------------- ilk olarak aşağı akan rakamlar -----------------------|
- if (j<9) {
- System.out.print(j+1+" ");
- } else {
- System.out.print(j+1);
- }
- //----------------------- yan yana olan noktalar -----------------------|
- for(int k=0; k<sutun; k++) {
- if ((((k+1)==preyX) && ((k+1)==hunterX)) && (((j+1)==preyY) && ((j+1)==hunterY))) {
- System.out.print(" # "); //vurdu
- }
- else if((k+1)==preyX && (j+1)==preyY) System.out.print(" P "); //prey yerleştir
- else if((k+1)==hunterX && (j+1)==hunterY) System.out.print(" H "); //hunter yerleştir
- else System.out.print(" . ");
- }
- System.out.println("");
- } //----------------------- grid çizimi ve H-P yerleşimi tamamen bitiyor -----------------------|
- }//----------------------- gridOluştur metodu bitiyor -----------------------|
- public void updateGrid() {
- if (gideriVar()==true) {
- if (araMesafe>1.5) {
- if(hunterX > preyX) hunterX -= 1;
- else if(hunterX < preyX) hunterX += 1;
- if(hunterY > preyY) hunterY -= 1;
- else if(hunterY < preyY) hunterY +=1;
- } else {
- if(hunterX>preyX && hunterY>preyY) {
- hunterX -= 1;
- } else if(hunterX > preyX) {
- hunterX -= 1;
- preyX -= 1;
- } else if (hunterX<preyX && hunterY<preyY) {
- hunterX += 1;
- } else if(hunterX < preyX) {
- hunterX += 1;
- preyX += 1;
- }
- if(hunterY > preyY) {
- hunterY -= 1;
- preyY -= 1;
- } else if(hunterY < preyY) {
- hunterY +=1;
- preyY +=1;
- }
- }
- } else {
- if (araMesafe>1.5) {
- if(hunterX > preyX) hunterX -= 1;
- else if(hunterX < preyX) hunterX += 1;
- if(hunterY > preyY) hunterY -= 1;
- else if(hunterY < preyY) hunterY +=1;
- } else {
- if(hunterX > preyX) {
- hunterX -= 1;
- } else if(hunterX < preyX) {
- hunterX += 1;
- }
- if(hunterY > preyY) {
- hunterY -= 1;
- } else if(hunterY < preyY) {
- hunterY +=1;
- }
- }
- }
- }
- public double araLen(int x1, int y1, int x2, int y2) {
- araMesafe = Math.abs((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
- araMesafe = Math.pow(araMesafe, 1/2.0);
- return araMesafe;
- }
- public boolean gideriVar() {
- int mesafe;
- if (hunterX > preyX) {
- mesafe = (sutun-1) - (sutun-preyX);
- } else if (hunterX < preyX) {
- mesafe = (sutun-preyX);
- } else if (hunterY > preyY) {
- mesafe = (satir-1) - (satir-preyY);
- } else if (hunterY<preyY) {
- mesafe = (satir-preyY);
- } else {
- mesafe = 2;
- }
- if (mesafe > 0) {
- return true;
- } else {
- return false;
- }
- }
- }
- public class odev2 {
- public static void main(String[] args) {
- oyun obje = new oyun();
- Scanner input = new Scanner(System.in);
- System.out.printf("Grid bilgilerini giriniz (Sütun) (Satır): ");
- String grid = input.nextLine();
- String[] gridXY = grid.split(" ");
- obje.sutun = Integer.parseInt(gridXY[0]);
- obje.satir = Integer.parseInt(gridXY[1]);
- System.out.printf("Avın yerini giriniz (Sütun) (Satır): ");
- String prey = input.nextLine();
- String[] preyXY = prey.split(" ");
- obje.preyX = Integer.parseInt(preyXY[0]);
- obje.preyY = Integer.parseInt(preyXY[1]);
- System.out.printf("Avcının yerini giriniz (Sütun) (Satır): ");
- String hunter = input.nextLine();
- String[] hunterXY = hunter.split(" ");
- obje.hunterX = Integer.parseInt(hunterXY[0]);
- obje.hunterY = Integer.parseInt(hunterXY[1]);
- System.out.printf("Oyun modunu giriniz (i/s): ");
- String oyunModu = input.next();
- String devamEt;
- obje.count = 0;
- if(oyunModu.equals("i")) {
- do {
- obje.gridOlustur();
- double ara = obje.araLen(obje.preyX, obje.preyY, obje.hunterX, obje.hunterY);
- if (ara == 0) break;
- System.out.printf("Aradaki mesafe: %.2f", ara);
- System.out.print("\nDevam? (e/h): ");
- devamEt = input.next();
- obje.updateGrid();
- obje.count=obje.count+1;
- } while((devamEt.equals("e")));
- System.out.println("Avcı, avı " +obje.count+ " hamlede yakaladı.");
- } else if(oyunModu.equals("s")) {
- obje.gridOlustur();
- double ara = obje.araLen(obje.preyX, obje.preyY, obje.hunterX, obje.hunterY);
- while(ara != 0) {
- obje.updateGrid();
- ara = obje.araLen(obje.preyX, obje.preyY, obje.hunterX, obje.hunterY);
- }
- if (ara==0) {
- obje.gridOlustur();
- }
- } else {
- System.out.println("öyle bir mod yok");
- }
- } //----------------------- main fonksiyonunun sonu -----------------------|
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement