Advertisement
jpvain

gopeli

Feb 26th, 2013
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Go on peli, jossa pelaajat asettavat nappuloitaan (eli kiviä) pelilaudalla oleviin ruutuihin. Voittaja on se pelaaja, jolla on pelin loputtua enemmän nappuloita pelilaudalla.
  2.  
  3. Oheisessa ohjelmassa on toteutettu luokat Pelaaja, GoPelaaja, enum Nappula sekä abstrakti luokka Peli. Lisäksi Pelin toteuttavasta luokasta GoPeli on annettu osa toteutuksesta.
  4.  
  5. Tehtäväsi on tutustua toteutettuihin luokkiin ja toteuttaa luokkaan GoPeli abstraktissa yliluokassa määritelty metodi annaVoittaja(). Metodi selvittää kumman pelaajan nappuloita on laudalla enemmän, ja palauttaa tämän pelaajan. Jos pelaajan nappulamäärät ovat tasoissa, metodi palauttaa null.
  6.  
  7.  
  8.  
  9. import java.util.Random;
  10.  
  11. public class Test{
  12. public static void main(String[] args){
  13. final Random rnd = new Random();
  14.  
  15. String[] n1 = "Arto Anne Esko Elina Kimmo Kaisa".split(" ");
  16. String[] n2 = "Lasse Leena Mikko Maija Aku Iines".split(" ");
  17. String nimi1 = n1[rnd.nextInt(n1.length)];
  18. String nimi2 = n2[rnd.nextInt(n2.length)];
  19.  
  20. GoPelaaja gp1 = new GoPelaaja(nimi1, Nappula.MUSTA);
  21. GoPelaaja gp2 = new GoPelaaja(nimi2, Nappula.VALKOINEN);
  22. System.out.println("Pelaaja1:" + gp1.annaNimi());
  23. System.out.println("Pelaaja2:" + gp2.annaNimi());
  24.  
  25. GoPeli gpeli = new GoPeli(gp1, gp2);
  26. System.out.println("Peli luotu!");
  27.  
  28. System.out.println("Lisataan nappuloita...");
  29. int p1 = 0, p2 = 0;
  30. for (int i=0; i<10; i++){
  31. for (int j=0; j<10; j++){
  32. Nappula nap = Nappula.values()[rnd.nextInt(3)];
  33. gpeli.asetaNappula(i, j, nap);
  34. if (nap == Nappula.MUSTA){
  35. p1++;
  36. } else if (nap == Nappula.VALKOINEN){
  37. p2++;
  38. }
  39. }
  40. }
  41.  
  42.  
  43. System.out.println("" + gp1.annaNimi() + " - nappuloita: " + p1);
  44. System.out.println("" + gp2.annaNimi() + " - nappuloita: " + p2);
  45. System.out.println("Voittaja:" + (gpeli.annaVoittaja() == null ? "Tasapeli" : gpeli.annaVoittaja().annaNimi()));
  46. }
  47. }
  48. class Pelaaja{
  49. private String nimi;
  50.  
  51. public Pelaaja(String nimi){
  52. this.nimi = nimi;
  53. }
  54.  
  55. public String annaNimi(){
  56. return nimi;
  57. }
  58. }
  59. enum Nappula{
  60. // Nappula on tietty musta tai valkoinen, mutta tyhja ruutu == TYHJA
  61. MUSTA, VALKOINEN, TYHJA;
  62. }
  63. class GoPelaaja extends Pelaaja{
  64. private Nappula nappula;
  65.  
  66. public GoPelaaja(String nimi, Nappula nappula){
  67. super(nimi);
  68. this.nappula = nappula;
  69. }
  70.  
  71. public Nappula annaNappula(){
  72. return nappula;
  73. }
  74. }
  75. abstract class Peli{
  76. private Pelaaja pelaaja1;
  77. private Pelaaja pelaaja2;
  78.  
  79. public Peli(Pelaaja pelaaja1, Pelaaja pelaaja2){
  80. this.pelaaja1 = pelaaja1;
  81. this.pelaaja2 = pelaaja2;
  82. }
  83.  
  84. public Pelaaja annaPelaaja1(){
  85. return pelaaja1;
  86. }
  87.  
  88. public Pelaaja annaPelaaja2(){
  89. return pelaaja2;
  90. }
  91.  
  92. /**
  93. * Metodi palauttaa pelin voittaneen pelaajan tai null, jos pelaajat
  94. * ovat tasoissa.
  95. */
  96. public abstract Pelaaja annaVoittaja();
  97. }
  98. class GoPeli extends Peli{
  99. private Nappula[][] nappulat;
  100.  
  101. public GoPeli(GoPelaaja p1, GoPelaaja p2){
  102. super(p1,p2);
  103. nappulat = new Nappula[10][10];
  104. }
  105.  
  106. public void asetaNappula(int x, int y, Nappula nappula){
  107. nappulat[x][y] = nappula;
  108. }
  109.  
  110. public Pelaaja annaVoittaja(){
  111.  
  112.  
  113.  
  114.  
  115. }
  116.  
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement