Advertisement
Guest User

alalala

a guest
Mar 29th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.02 KB | None | 0 0
  1. import java.util.Scanner;
  2. import robotti.Ohjain;
  3.  
  4. public class Paaohjelma {
  5.  
  6. public static void main(String[] args) {
  7.  
  8. Scanner lukija = new Scanner(System.in);
  9.  
  10. Ohjain.asetaLaatikkoSatunnaisesti(); //arvotaan mestat laatikolle
  11. Ohjain.kaynnista(); //startataan robopaska
  12.  
  13. // kertoo robotin x- ja y-koordinaatit
  14. int robottiX = Ohjain.robottiX();
  15. int robottiY = Ohjain.robottiY();
  16.  
  17. // kertoo laatikon x- ja y-koordinaatit
  18. int laatikkoX = Ohjain.laatikkoX();
  19. int laatikkoY = Ohjain.laatikkoY();
  20.  
  21. // kertoo rahtialueen x- ja y-koordinaatit
  22. int tavoiteX = Ohjain.tavoiteX();
  23. int tavoiteY = Ohjain.tavoiteY();
  24.  
  25. int mon = 0; // Muuttuja et voidaan tallentaa monta askelta halutaan robon liikkuvan
  26.  
  27. while (true) {
  28. System.out.print("komento (ratkaise, viereen, sammuta, vasen, oikea, liiku, liikuMonta):"); //kysytään käyttäjältä komento
  29. String komento = lukija.nextLine(); //luetaan komento
  30. if (komento.equals("sammuta")) { // jos komento = sammuta, break
  31. Ohjain.sammuta();
  32. break;
  33. } else if (komento.equals("vasen")) { // jos komento = "vasen", Ohjain.vasen();
  34. Ohjain.vasen();
  35. } else if (komento.equals("oikea")) {
  36. Ohjain.oikea();
  37. } else if (komento.equals("liiku")) {
  38. Ohjain.liiku();
  39. } else if (komento.equals("viereen")) { //tähän tehdään "viereen" -komennon toteutus
  40. Ohjain.vasen(); //ensin yks käännös vasempaan, koska alkuasennossa aina osottaa oikeelle naama
  41. while (laatikkoY > robottiY) {
  42. Ohjain.liiku(); //sit liikutaan niin kauan, että ....
  43. robottiY = Ohjain.robottiY(); //robotin Y-koordinaatti on sama kun laatikon y-koordinaatti
  44. }
  45. Ohjain.oikea(); //sit käännytään oikeelle, kun ollaan laatikon korkeudella (eli robon naama kohti laatikkoo)
  46. System.out.println(robottiX); //nää println -komennot oli mua varten, ku tsekkasin tekovaiheessa missä se robo menee
  47. System.out.println(laatikkoX);
  48. 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
  49. Ohjain.liiku(); //liikutaan yks askel kohti laatikkoo
  50. System.out.println(robottiX); //taas vaan printtasin rivin että näin testivaiheessa missä robo menee
  51. robottiX = Ohjain.robottiX(); //asetetaan robottix:ks robotin sen hetken koordinaatti, missä se menee
  52. }
  53. } else if (komento.equals("ratkaise")) {
  54. if (robottiY < laatikkoY) { //tsekataan, onko robo jo samassa y-koordinaatissa kun laatikko
  55. Ohjain.vasen(); //jos ei oo, niin käännetään robon nokka vasempaan (eli ylöspäin, koska robo on siis alempana kun laatikko)
  56. 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.
  57. Ohjain.liiku();
  58. robottiX = Ohjain.robottiX();
  59. robottiY = Ohjain.robottiY();
  60. laatikkoX = Ohjain.laatikkoX();
  61. laatikkoY = Ohjain.laatikkoY();
  62. }
  63. Ohjain.oikea(); //Käännetään robon nokka oikeelle kohti laatikkoo
  64. while (laatikkoX > (robottiX + 1)) { //ja tässä ohjataan robo sinne laatikon viereen
  65. Ohjain.liiku();
  66. robottiX = Ohjain.robottiX();
  67. robottiY = Ohjain.robottiY();
  68. laatikkoX = Ohjain.laatikkoX();
  69. laatikkoY = Ohjain.laatikkoY();
  70. }
  71. }
  72. while (laatikkoX < tavoiteX) { //tässä vaiheessa robo on nyt kiinni laatikossa, työntämässä sitä oikeelle
  73. Ohjain.liiku(); //työnnetään niin kauan, että laatikon X on sama kun tavoteboksin X
  74. laatikkoX = Ohjain.laatikkoX();
  75. }
  76. Ohjain.vasen(); //nyt laatikko on pystylinjassa samassa tasossa tavotelaatikon kans, niin siirretään robo
  77. Ohjain.liiku(); //laatikon yläpuolelle, mistä se lähtee sitä sit työntään alas
  78. Ohjain.oikea();
  79. Ohjain.liiku();
  80. Ohjain.oikea();
  81. 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
  82. Ohjain.liiku(); //tavoteboksin Y, eli ne on päälekkäin
  83. laatikkoY = Ohjain.laatikkoY(); //taas päivitetään tässä vaan laatikkoY:n arvoks laatikon koordinaatti aina loopin lopussa
  84. }
  85.  
  86. } else {
  87. System.out.println("Montako?");
  88. mon = Integer.parseInt(lukija.nextLine());
  89. Ohjain.liikuMonta(mon);
  90. }
  91. }
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement