Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import robotti.Ohjain;
- public class Paaohjelma {
- public static void main(String[] args) {
- Scanner lukija = new Scanner(System.in);
- Ohjain.asetaLaatikkoSatunnaisesti(); //arvotaan mestat laatikolle
- Ohjain.kaynnista(); //startataan robopaska
- // kertoo robotin x- ja y-koordinaatit
- int robottiX = Ohjain.robottiX();
- int robottiY = Ohjain.robottiY();
- // kertoo laatikon x- ja y-koordinaatit
- int laatikkoX = Ohjain.laatikkoX();
- int laatikkoY = Ohjain.laatikkoY();
- // kertoo rahtialueen x- ja y-koordinaatit
- int tavoiteX = Ohjain.tavoiteX();
- int tavoiteY = Ohjain.tavoiteY();
- int mon = 0; // Muuttuja et voidaan tallentaa monta askelta halutaan robon liikkuvan
- while (true) {
- System.out.print("komento (ratkaise, viereen, sammuta, vasen, oikea, liiku, liikuMonta):"); //kysytään käyttäjältä komento
- String komento = lukija.nextLine(); //luetaan komento
- if (komento.equals("sammuta")) { // jos komento = sammuta, break
- Ohjain.sammuta();
- break;
- } else if (komento.equals("vasen")) { // jos komento = "vasen", Ohjain.vasen();
- Ohjain.vasen();
- } else if (komento.equals("oikea")) {
- Ohjain.oikea();
- } else if (komento.equals("liiku")) {
- Ohjain.liiku();
- } else if (komento.equals("viereen")) { //tähän tehdään "viereen" -komennon toteutus
- Ohjain.vasen(); //ensin yks käännös vasempaan, koska alkuasennossa aina osottaa oikeelle naama
- while (laatikkoY > robottiY) {
- Ohjain.liiku(); //sit liikutaan niin kauan, että ....
- robottiY = Ohjain.robottiY(); //robotin Y-koordinaatti on sama kun laatikon y-koordinaatti
- }
- Ohjain.oikea(); //sit käännytään oikeelle, kun ollaan laatikon korkeudella (eli robon naama kohti laatikkoo)
- System.out.println(robottiX); //nää println -komennot oli mua varten, ku tsekkasin tekovaiheessa missä se robo menee
- System.out.println(laatikkoX);
- while (laatikkoX > (robottiX + 1)) { //while looppi voimassa niin kauan, kun laatikon X-koordinaatti on suurempi ku robon (eli niin kauan ku robo on laatikon vasemmalla puolella
- Ohjain.liiku(); //liikutaan yks askel kohti laatikkoo
- System.out.println(robottiX); //taas vaan printtasin rivin että näin testivaiheessa missä robo menee
- robottiX = Ohjain.robottiX(); //asetetaan robottix:ks robotin sen hetken koordinaatti, missä se menee
- }
- } else if (komento.equals("ratkaise")) {
- if (robottiY < laatikkoY) { //tsekataan, onko robo jo samassa y-koordinaatissa kun laatikko
- Ohjain.vasen(); //jos ei oo, niin käännetään robon nokka vasempaan (eli ylöspäin, koska robo on siis alempana kun laatikko)
- while (laatikkoY > robottiY) { //sit siirretään sitä robo ylöspäin sinne laatikon korkeudelle, niin kauan kun koordinaatit on samat. eli sama homma kun viereen-komennnolla.
- Ohjain.liiku();
- robottiX = Ohjain.robottiX();
- robottiY = Ohjain.robottiY();
- laatikkoX = Ohjain.laatikkoX();
- laatikkoY = Ohjain.laatikkoY();
- }
- Ohjain.oikea(); //Käännetään robon nokka oikeelle kohti laatikkoo
- while (laatikkoX > (robottiX + 1)) { //ja tässä ohjataan robo sinne laatikon viereen
- Ohjain.liiku();
- robottiX = Ohjain.robottiX();
- robottiY = Ohjain.robottiY();
- laatikkoX = Ohjain.laatikkoX();
- laatikkoY = Ohjain.laatikkoY();
- }
- }
- while (laatikkoX < tavoiteX) { //tässä vaiheessa robo on nyt kiinni laatikossa, työntämässä sitä oikeelle
- Ohjain.liiku(); //työnnetään niin kauan, että laatikon X on sama kun tavoteboksin X
- laatikkoX = Ohjain.laatikkoX();
- }
- Ohjain.vasen(); //nyt laatikko on pystylinjassa samassa tasossa tavotelaatikon kans, niin siirretään robo
- Ohjain.liiku(); //laatikon yläpuolelle, mistä se lähtee sitä sit työntään alas
- Ohjain.oikea();
- Ohjain.liiku();
- Ohjain.oikea();
- while (laatikkoY > tavoiteY) { //nyt robo on laatikon päällä, ja tällä työnnetään niin kauan alaspäin kun laatikon y on sama kun
- Ohjain.liiku(); //tavoteboksin Y, eli ne on päälekkäin
- laatikkoY = Ohjain.laatikkoY(); //taas päivitetään tässä vaan laatikkoY:n arvoks laatikon koordinaatti aina loopin lopussa
- }
- } else {
- System.out.println("Montako?");
- mon = Integer.parseInt(lukija.nextLine());
- Ohjain.liikuMonta(mon);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement