Trädvy Permalänk
Medlem
Registrerad
Feb 2015

Java hjälp. (guessing game)

Hej, jag vill försöka mig på att göra ett så kallat guessing game. jag har kollat runt lite på internet för att se hur andra har gjort och efter det så har jag försökt själv, jag förstår konceptet och vad koden skall göra men jag får inte riktigt ihopp det ändå. Jag upskattar all hjälp/tips & feedback jag kan få

import java.util.Scanner; public class guessinggame { public static int playGame(int max) { int number = (int)(Math.random() * max) +1; } public static void main(String[] args) { System.out.println("Välkommen HiLo"); System.out.println("Välj vilken svårighetsgrad"); System.out.println("1. Lätt 1-10"); System.out.println("2. medel 1-100"); System.out.println("3. svår 1-1000"); Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); if(num1 == 1) { System.out.println("Gissa på ett tal mellan 1 & 10"); } else if (num1 == 2) { System.out.println("Gissa på ett tal mellan 1 & 100"); } else if (num1 == 3) { System.out.println("Gissa på ett tal mellan 1 & 1000"); } playGame(); { Scanner sc = new Scanner(System.in); int gissning; int tal; int antal = 0; do { System.out.print("Gissa ett tal: "); int gissning = sc.nextInt(); antal++; // Räkna upp antalet gissningar // Är gissningen större än talet? if (gissning > tal) { System.out.println("För högt!"); } // Är gissningen mindre än talet? else if (gissning < tal) { System.out.println("För lågt!"); } // Om gissningen varken är större eller mindre så måste den vara rätt! else { System.out.println("Rätt!!"); } // Fortsätt tills dess att man gissat rätt. // Hur kan man göra om man bara vill tillåta tre gissningar? } while (gissning != tal); System.out.println("Du behövde " + tal + " gissningar."); } }

La till CODE-taggar och förtydligade rubriken
Trädvy Permalänk
Medlem
Plats
Bästkusten
Registrerad
Jun 2009

Använd code-taggar så blir det lättare att läsa koden.
Sen ser jag ingen fråga? Vad är det som inte fungerar?

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & OCZ Agility 3 120GB & Samsung 960 EVO 250GB & Crucial V4 256GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Okt 2012
Skrivet av DunderKlumpen:

Använd code-taggar så blir det lättare att läsa koden.
Sen ser jag ingen fråga? Vad är det som inte fungerar?

Ta och kompilera koden kanske? Det blir en del fel...

Till ts: Jag har en bra version av denna på datorerna i skolan men jag har lov just nu så jag kan tyvärr inte kolla den och det var alldeles för längesen jag gjorde något själv för att komma ihåg tillräckligt...

AMD x6 1090t BE - Noctua NH-U9B SE2 - 2x4gb- ASUS GTX670 4gb - CX750M -Sabertooth 990FX R2.0 - SSD 120gb - 2 HDD:s - CM HAF 912 Plus - Benq GL2440 + Dell U2312HM + Samsung 731BF - Allt köpt begagnat! -- Sidewinder X2 - R.A.T TE - AT ATH-M50x - Logitech Z323 - Begringer Xenyx QZ1202USB - t.Bone SC400 - Samsung NX30 - Note 2

Trädvy Permalänk
Hedersmedlem
Plats
127.0.0.1
Registrerad
Apr 2009

Jag la till CODE-taggar åt dig och förtydligade rubriken, så det blir lättare för andra att hitta tråden. Försök vara så beskrivande som möjligt när du väljer rubrik, det gör det lättare för dig att få hjälp, och för andra med liknande frågor att i framtiden hitta tråden.

Trädvy Permalänk
Medlem
Registrerad
Aug 2007

MSI Z77A-S03 Inet Ed. | i5 2500k @ 4.2Ghz | 2x Intel 520 SSD + 3TB Lagring | 32GB RAM | ASUS 760 DCII 2GB OC | EVGA Supernova G2 750W Gold+ | Fractal Design R4 | Phantek PH-TC14PE | Citera eller Pinga mig för svar!

Trädvy Permalänk
Medlem
Plats
Bästkusten
Registrerad
Jun 2009
Skrivet av Laccy:

Ta och kompilera koden kanske? Det blir en del fel...

Till ts: Jag har en bra version av denna på datorerna i skolan men jag har lov just nu så jag kan tyvärr inte kolla den och det var alldeles för längesen jag gjorde något själv för att komma ihåg tillräckligt...

Nej, TS kan ställa en riktig fråga från början. Just nu känns det bara som om personen vill ha någon som gör uppgiften åt honom. Tar man sig inte tid att ställa en fråga, varför ska andra ta sig tid att ge svar?

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & OCZ Agility 3 120GB & Samsung 960 EVO 250GB & Crucial V4 256GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Trädvy Permalänk
Entusiast
Registrerad
Sep 2011

Här är massor med skumheter. Jag ska försöka kommentera på det mesta.

Först och främst, försök att få rätt på konventioner, indentering, och sånt. Det blir mycket lättare att läsa koden då.
En konvention är att alltid stava klassnamn med stor bokstav, en annan är att kapitalisera alla nya ord i namnet som följer. Så din klass skulle bli GuessingGame, inte guessinggame.
Sen ska man gärna hålla alla variabel- och metodnamn på engelska. Så slipper då åka på bekymmer med åäö.

Använder du Eclipse så markera hela koden och tryck ctrl+i, det kommer fixa indenteringen åt dig.

Sen till felen:

  • Din "public static int playGame(int max)" metod överst returnerar ingenting. Det jag har markerat med fetstil betyder att den ska returnera ett heltal (int).

  • Du stänger aldrig någon av dina Scanners "sc.close()". Det är dumt att låta dem lyssna för alltid.

  • Sen vetefan vad du menar med raden: "playGame(); {". Är det att du ska skapa en ny metod? Eller försöker du kalla på playGame(int) som du skapade tidigare?

  • Du deklarerar "int gissning" två gånger.

  • Du använder aldrig variabeln antal, men jag antar att du hade tänkt använda den i sista utskriften, där du har skrivit tal.

  • Sen saknar du en slutklammer "}", men jag lyckas inte lista ut vad den ska stänga. Gissningsvis main metoden där precis innan "playGame(); {", om det är ett försök till att skapa en ny metod dvs.

Och det bör väl nämnas att dina if-satser som kollar vilken svårighetsgrad man valde aldrig gör något med det man skriver in, utöver att berätta inom vilka tal man ska gissa. Resten av spelet får inte reda på det.

Trädvy Permalänk
Medlem
Registrerad
Feb 2015
Skrivet av DunderKlumpen:

Använd code-taggar så blir det lättare att läsa koden.
Sen ser jag ingen fråga? Vad är det som inte fungerar?

Förlåt om jag va oklar i mitt inlägg, Jag söker hjälp & tips för min kodning och har ingen mer direkt fråga förutom vad det är jag gör för fel i koden (vilket det uppenbarligen är)

Skrivet av Laccy:

Ta och kompilera koden kanske? Det blir en del fel...

Till ts: Jag har en bra version av denna på datorerna i skolan men jag har lov just nu så jag kan tyvärr inte kolla den och det var alldeles för längesen jag gjorde något själv för att komma ihåg tillräckligt...

akej typiskt

Skrivet av Palmie:

Jag la till CODE-taggar åt dig och förtydligade rubriken, så det blir lättare för andra att hitta tråden. Försök vara så beskrivande som möjligt när du väljer rubrik, det gör det lättare för dig att få hjälp, och för andra med liknande frågor att i framtiden hitta tråden.

tack

Will do!

Skrivet av Blargmode:

Här är massor med skumheter. Jag ska försöka kommentera på det mesta.

Först och främst, försök att få rätt på konventioner, indentering, och sånt. Det blir mycket lättare att läsa koden då.
En konvention är att alltid stava klassnamn med stor bokstav, en annan är att kapitalisera alla nya ord i namnet som följer. Så din klass skulle bli GuessingGame, inte guessinggame.
Sen ska man gärna hålla alla variabel- och metodnamn på engelska. Så slipper då åka på bekymmer med åäö.

Använder du Eclipse så markera hela koden och tryck ctrl+i, det kommer fixa indenteringen åt dig.

Sen till felen:

  • Din "public static int playGame(int max)" metod överst returnerar ingenting. Det jag har markerat med fetstil betyder att den ska returnera ett heltal (int).

  • Du stänger aldrig någon av dina Scanners "sc.close()". Det är dumt att låta dem lyssna för alltid.

  • Sen vetefan vad du menar med raden: "playGame(); {". Är det att du ska skapa en ny metod? Eller försöker du kalla på playGame(int) som du skapade tidigare?

  • Du deklarerar "int gissning" två gånger.

  • Du använder aldrig variabeln antal, men jag antar att du hade tänkt använda den i sista utskriften, där du har skrivit tal.

  • Sen saknar du en slutklammer "}", men jag lyckas inte lista ut vad den ska stänga. Gissningsvis main metoden där precis innan "playGame(); {", om det är ett försök till att skapa en ny metod dvs.

Och det bör väl nämnas att dina if-satser som kollar vilken svårighetsgrad man valde aldrig gör något med det man skriver in, utöver att berätta inom vilka tal man ska gissa. Resten av spelet får inte reda på det.

Tack för så utförligt svar
*hitils har jag inte lärt mig att jag skall stänga av mina scanners men tack!
*Aa jag vill skapa en ny metod som heter playGame & i den så är de meningen att själva spelet skall ta plats.
*ojdå.
*aa det var där jag tänkte använda den.
*Ja jag försökte att skapa en till metod.
okej tack!
jag upskattar verkligen all hjälp jag fått av alla hitils även om jag inte har varit så klar med vad jag vill ha hjälp med eller hur inlägget var.

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Dec 2014

Blargmode tog absolut upp det allra mesta men kan tillägga en sak.

Som nämnt tidigare har du med variablen antal men använder den inte. Om det är så att du vill använda denna variabel för att visa antal gissningar ska du se till att öka den efter varje försök.

Denna variabel kan sedan användas i din do-while för att se till så det bara blir max 3 gissningar genom att kolla så du går ur do-while loopen om variabeln blir större än 3 till exempel.

Om denna variabeln används till annat kan du lägga till en annan. Poängen var att ha en variabel som du använder för att kolla hur många gissningar som gjorts som sedan kan kollas för att se om användaren ska hoppa ur while loopen.

Trädvy Permalänk
Medlem
Registrerad
Feb 2017

Lånar tråden! :-)

Hejsan!

Lånar tråden då jag håller på med samma "spel", ett gissnings spel där man ska gissa på en siffra som datorn har slumpat fram.

Problemet jag har är att jag inte lyckas returnera antalet gissningar man gjort för att hitta rätt nummer. Det som ska returneras är en int från metoden playgame. Är det nån som kan se vad jag har gjort för fel?

import java.util.Scanner;

public class HiLo2 {
public static void main(String[] args) {

System.out.println("Welcome to HiLo");
System.out.println("Enter which level you want to play:");
System.out.println("1. Easy 1-10");
System.out.println("2. Medium 1-100");
System.out.println("3. Hard 1-1000");

Scanner sc = new Scanner(System.in);
int choice = sc.nextInt();
if (choice == 1) {
playGame(10);
} else if (choice == 2) {
playGame(100);
} else if (choice == 3) {
playGame(1000);
} else {
System.out.println("Wrong input");
}
System.out.println(nrOfGuesses);

}

public static int playGame(int maxNumber) {
Scanner sc = new Scanner(System.in);
int number = (int)(Math.random() * maxNumber) +1;
int guess;
int nrOfGuesses = 0;
do {
System.out.println("Guess a number between 1-"+maxNumber);
nrOfGuesses = nrOfGuesses + 1;
guess = sc.nextInt();
if (guess < number) {
giveResponce(number, guess);
} else if (guess > number) {
giveResponce(number, guess);
} else if (guess == number) {
giveResponce(number, guess);
}
} while (guess != number);
return nrOfGuesses;
}

public static void giveResponce(int answer, int guess) {
if (guess < answer) {
System.out.println("Your guess is to low");
} else if (guess > answer) {
System.out.println("Your guess is to high");
} else if (guess == answer) {
System.out.println("Great, you guessed the right number");
}
}
}

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Feb 2006

@ripelipi du deklarerar nrOfGuesses i metoden och returnerar den, men du använder aldrig det returnerade värdet i din main metod.

Du borde ha något i stil med guesses = playGame(10); i dina if-else satser