Noppapeli. Metodien suorittaminen eli kutsuminen.

package v4_eta;

import java.util.Scanner;

// Metodien suorittaminen eli kutsuminen

/**
* @author ark
* @version 0.35
* @task 5-120216
*
*
*
*
* Ohjelma Noppapeli toteuttaa yksinkertaisen noppapelin. Ohjelma kysyy
* ensin, kuinka monta euroa käyttäjä haluaa laittaa peliin (min 3 eur max
* 1000 eur). Tämän jälkeen peli heittää kolmea noppaa. Jokainen heitto (=
* kolmen nopan heitto) maksaa yhden euron. Kun peli heittää siten, että
* kaikkien noppien arvo on 6, kierroksen voitto on 40 eur. Kun peli
* heittää siten, että kahden nopan arvo on 6, kierroksen voitto on 20 eur
* ja kun yhden nopan arvo on 6, kierroksen voitto on 1 eur. Ohjelma
* tulostaa tulokset seuraavasti: noppa1 noppa2 noppa3 voitto 6 6 * 20.0 *
* 6 1.0 6 * 1.0 * 6 1.0 6 * 1.0
*
* Toteuta ohjelmaasi seuraavat metodit: pyydapanos, joka pyytää
* käyttäjältä pelin panoksen (3-10000 eur) ja palauttaa sen arvonaan,
* heitaNoppa, heittää yhden nopan ja palauttaa arvonaan nopan silmäluvun,
* laskeVoitto, joka saa parametreina heitettyjen noppien silmäluvut,
* metodi tutkii noppien silmäluvun ja laskee kierroksen voiton, jonka se
* palauttaa arvonaan, tulostaRivi, joka saa parametrinaan kolmen nopan
* silmäluvut sekä kierroksen voiton euroina, metodi tulostaa noppien
* arvot ja voiton. aja, joka sisältää ohjelman logiikan. Kokeile ohjelmaa
* ja selvitä, onko voittotaulukko suosiollinen pelaajalle vai pelin
* ylläpitäjälle, ts. häviääkö pelaaja todennäköisesti enemmän kuin
* voittaa?
*
*/

public class Noppapeli5 {
Scanner input = new Scanner(System.in);

public void run() {
int stake, totalWin = 0, kierrosVoitto, noppa1, noppa2, noppa3;

// panos
System.out.print("Paljonko laitetaan peliin? ");
stake = pyydaPanos();
// end of pannos

System.out.println(" Kierros:" + " Noppa 1" + ":" + "\tNoppa 2" + ":"
+ "\tNoppa 3" + ":" + "\tVoitto" + ":");

// kierros
int i = 0; // kierrosten määrä = laskuri
do {
i = i + 1;
noppa1 = heitaNoppa();
noppa2 = heitaNoppa();
noppa3 = heitaNoppa();
kierrosVoitto = laskeVoitto(noppa1, noppa2, noppa3);
tulostaRivi(noppa1, noppa2, noppa3, kierrosVoitto, i);
totalWin = totalWin + kierrosVoitto;
stake = stake - 1;
} while (stake >= 1);
// end of kierros

System.out.print("\n" + "Voitit yhteensä: " + totalWin);
}

private void tulostaRivi(int noppa1, int noppa2, int noppa3, int roundWin,
int laskuri) {

// jos kaikki nopat == 6, ne tulostetaan
if ((noppa1 + noppa2 + noppa3) == 18) {
System.out.println(laskuri + ".\t" + " | " + noppa1 + "\t" + "\t"
+ "| " + noppa2 + "\t" + "\t" + "| " + noppa3 + "\t" + "| "
+ "\t " + roundWin);

// jos noppa1 ja noppa2 ovat 6, noppa3:n asemesta tulostetaan '*':
} else if (noppa1 + noppa2 == 12) {
System.out.println(laskuri + ".\t" + " | " + noppa1 + "\t" + "\t"
+ "| " + noppa2 + "\t" + "\t" + "| " + "*" + "\t" + "| "
+ "\t " + roundWin);
;
}

// jos noppa1 ja noppa3 ovat 6, noppa2:n asemesta tulostetaan '*':
else if (noppa1 + noppa3 == 12) {
System.out.println(laskuri + ".\t" + " | " + noppa1 + "\t" + "\t"
+ "| " + "*" + "\t" + "\t" + "| " + noppa3 + "\t" + "| "
+ "\t " + roundWin);
}
// jos noppa2 ja noppa3 ovat 6, noppa1:n asemesta tulostetaan '*':
else if (noppa2 + noppa3 == 12) {
System.out.println(laskuri + ".\t" + " | " + "*" + "\t" + "\t"
+ "| " + noppa2 + "\t" + "\t" + "| " + noppa3 + "\t" + "| "
+ "\t " + roundWin);
}

// jos vain noppa1 ==6
else if (noppa1 == 6) {
System.out.println(laskuri + ".\t | " + noppa1 + "\t\t| " + "*"
+ "\t\t| " + "*" + "\t" + "| " + "\t " + roundWin);
}

// jos vain noppa2 ==6
else if (noppa2 == 6) {
System.out.println(laskuri + ".\t | " + "*" + "\t\t| " + noppa2
+ "\t\t| " + "*" + "\t" + "| " + "\t " + roundWin);
}
// jos vain noppa3 ==6
else if (noppa3 == 6) {
System.out.println(laskuri + ".\t | " + "*" + "\t\t| " + "*"
+ "\t\t| " + noppa3 + "\t" + "| " + "\t " + roundWin);
}

// ei ole kutosia
else
System.out.println(laskuri + ".\t | " + "*" + "\t\t| " + "*"
+ "\t\t| " + "*" + "\t" + "| " + "\t " + roundWin);
}

private int laskeVoitto(int noppa1, int noppa2, int noppa3) {
int roundWin;
if ((noppa1 + noppa2 + noppa3) == 18) {
roundWin = 40;
} else if ((noppa1 + noppa2 == 12) || (noppa1 + noppa3 == 12)
|| (noppa2 + noppa3 == 12)) {
roundWin = 20;
} else if (noppa1 == 6 || noppa2 == 6 || noppa3 == 6) {
roundWin = 1;
} else
roundWin = 0;
return roundWin;
}

private int heitaNoppa() {
int silmaLuku = (int) (Math.random() * 6) + 1;
return silmaLuku;
}

private int pyydaPanos() {
int stake = input.nextInt();
return stake;
}

public static void main(String[] args) {
Noppapeli5 olio = new Noppapeli5();
olio.run();
}
}
Advertisements

Comments are closed.

%d bloggers like this: