
נכתב במקור על ידי
DooDeLzZz
אם תקרא טוב את התגובה שלי, הסברתי לך איפה הטעות.
אני יתייחס לקוד שכתוב ב
תגובה מס' 5 כי הוא נכון אבל צריך קצת שיפורים.
הבעיה שלך היא שבפעולה של ההגרלה אתה אומר לו להכניס פרמטרים (בתחילת הפעולה הוא מכניס ובסוף הפעולה יש את ההגרלה). תיקח את ההתחלה את כל הקטע שהוא מכניס פרמטרים ותשים בפעולה נפרדת. הבעיה הראשונה היא בגלל שהמשתנה code הוא בעצם משתנה מקומי שאתה כל הזמן מאפס ל0. זה לא שהוא לא מתעדכן, אתה מאפס אותו כל הזמן. את השורה "Code code = CodeGenerator.newCode(length,values);" תמחק מכל מקום שבה היא קיימת ותוסיף אותה שתופיע
פעם אחת בכל הקוד ברמת המחלקה.
אתה טועה אחי, אם אני יוריד את החלק שאמרת לי ואני ישים אותו רק ברמת המחלקה .אז לא יוגרל לי מספר חדש אם אני יבחר לשחק שוב .
קוד:
import java.util.Scanner;
import il.ac.huji.cs.intro.mastermind.*;
public class ex3 {
static int length;
static int values;
static int Maxguesses;
static double roundGame=1;
static int gameNumber;
static int gameWon;
static double winRate=0;
static double averagewin=0;
public ex3(){
this.gameWon++;
this.gameNumber++;
}
public static void gameplay(){
MastermindUI ui = MastermindUIFactory.newMastermindUI();
int length=ui.askNumber("Enter the length of the code");
while(length<0)
{
ui.displayErrorMessage(" you enter a negative length, (you must enter a positive values)");
length=ui.askNumber("Enter the length of the code");
}
int values=ui.askNumber("Enter the number of possible values in the code");
while(values<0)
{
ui.displayErrorMessage(" you enter a negative values, (you must enter a positive values)");
values=ui.askNumber("Enter the values of the code");
}
int Maxguesses=ui.askNumber("Enter the maximal number of guesses per game.");
while(Maxguesses<0)
{
ui.displayErrorMessage(" you enter a negative number of Maxguesses, (you must enter a positive values)");
Maxguesses=ui.askNumber("Enter the maximal number of guesses per game.");
}
Code code = CodeGenerator.newCode(length,values);
Code guess=ui.askGuess("enter your guesses",length);
Maxguesses--;
System.out.println("the random code is:" +code.toString());
roundGame=1;
gameNumber++;
gameWon=0;
winRate=0;
averagewin=0;
while(Maxguesses>0 && gameWon==0)
{
if(guess.equals(code)==true)
ex3.gameWon++;
else
{
guess=ui.askGuess("enter other guesses",length);
roundGame++;
Maxguesses--;
}
}
if(guess.equals(code)==true)
ex3.gameWon++;
if(ex3.gameWon!=0)
ui.displayMessage("You Win the game");
else
if(Maxguesses==0 && ex3.gameWon==0 )
ui.displayMessage("You Lose the game");
}
public static void noChange(){
MastermindUI ui = MastermindUIFactory.newMastermindUI();
Code code1 = CodeGenerator.newCode(ex3.length,ex3.values);
Code guess=ui.askGuess("enter your guesses",ex3.length);
Maxguesses--;
System.out.println("the random code is:" +code1.toString());
double roundGame=1;
int gameNumber=1;
ex3.gameWon=0;
double winRate=0;
double averagewin=0;
while(Maxguesses>0 && ex3.gameWon==0)
{
if(guess.equals(code1)==true)
ex3.gameWon++;
else
{
guess=ui.askGuess("enter other guesses",length);
roundGame++;
Maxguesses--;
}
}
if(guess.equals(code1)==true)
ex3.gameWon++;
if(ex3.gameWon!=0)
ui.displayMessage("You Win the game");
else
if(Maxguesses==0 && ex3.gameWon==0 )
ui.displayMessage("You Lose the game");
if(guess.equals(code1)==true)
ex3.gameWon++;
if(ex3.gameWon!=0)
ui.displayMessage("You Win the game");
else
if(Maxguesses==0 && ex3.gameWon==0 )
ui.displayMessage("You Lose the game");
}
public static void moreGame(){
MastermindUI ui = MastermindUIFactory.newMastermindUI();
winRate=ex3.gameWon/gameNumber;
if(ex3.gameWon==0)
averagewin=Double.NaN;
else
averagewin=roundGame/ex3.gameWon;
boolean moreGame=ui.askYesNo("You want play another game?");
if(moreGame==false)
{
ui.showStats(ex3.gameNumber, ex3.gameWon, winRate, averagewin);
ui.close();
}
else
{
boolean change=ui.askYesNo("are you want changing the game parameters");
if(change==true)
{
ui.displayMessage("Please enter the new prameters");
gameplay();
ex3.gameNumber++;
}
if(change==false)
{
ui.clear();
gameplay();
}
moreGame();
}
}
}
תסתכל על הקוד הזה .. הוא מוכן ב 99%! הרצתי כמעט את כל האפשרויות הכול עובד פיקס . רק דבר אחד לא עובד לי וזה הקטע של מספר הניצחונות . אם אני משחק יותר ממשחק אחד זה לא סופר לי את הניצחונות שהיו בסיבובים הקודמים אשמח אם תעיין בקוד הזה הוא הכי עדכני וטוב שיש . (הוספתי לו קונסטקטור פעולה בונה, ככה שהוא תמיד מוסיף אחד גם למספר משחקים וגם לניצחונות אבל זה לא מסתדר לי )
ואשמח אם תתיחס אליו .