קוד:
method void run() {
var char key;
var boolean exit, exit2;
var int x, y, tempX,tempY, count, level, temp;
let count=0;
let exit = false;
let exit2 = false;
let temp = 0;
let level = 0;
while (~exit) {
// waits for a key to be pressed.
while (key = 0) {
let key = Keyboard.keyPressed();
do moveSquare(count, level);
}
if(~exit2){
let tempX= xFoodSnake();
let tempY= yFoodSnake();
do Screen.setColor(true);
do Screen.drawRectangle(tempX, tempY, tempX + 10, tempY + 10);
let count=count+1;
let exit2 = true;
let temp = temp + 1;
}
let x=square.xSnake();
let y=square.ySnake();
if((Math.abs(x-tempX))<1 & Math.abs((y=tempY))<1){
let exit2 = false;
}
if(temp = 10) {
let level = level + 1;
let temp = 0;
}
if(level = 10) {
let exit = true;
do Screen.clearScreen();
do Output.printString("Your level is: ");
do Output.printInt(level);
do Output.println();
do Output.printString("Your scores is: ");
do Output.printInt(count);
do Output.println();
do Output.printString("You win!!!");
do Sys.halt();
}
if (key = 81) {
do square.erase();
do Screen.clearScreen();
do Output.printString("You're out of the game");
do Sys.halt();
let exit = true;
}
if (key = 90) {
do square.decSize();
}
if (key = 88) {
do square.incSize();
}
if (key = 131) {
let direction = 1;
}
if (key = 133) {
let direction = 2;
}
if (key = 130) {
let direction = 3;
}
if (key = 132) {
let direction = 4;
}
// waits for the key to be released.
while (~(key = 0)) {
let key = Keyboard.keyPressed();
do moveSquare(count, level);
}
}
return;
}
הבעיה הוא בקוד הצבע אדום, נסיתי להשים משתנה בוליאני {EXIT2}, בהתחלה הוא שקר, אחרי שאני נכנס לIF אני פשוט בונה ריבוע שהנחש יאכול. הXFOODSNAKE זה קריאה לפונקציה שמביאה באופן שררותי את X וככה גם לY. הפונקציה drawRectangle מציירת על המסך ריבוע.
הIF שאחרי מכאן צריך לבדוק אם הנחש, הראש שלו, והקוביה שהוא צריך לאכול באותו מיקום ובמידה וכן הוא אוכל אותו ונפתח עוד ריבוע.