📄 gamescreen.java
字号:
int temp = blankFrame[letterCounter];
blankFrame[letterCounter] = letterFrame[cursorPosition];
letterFrame[cursorPosition] = temp;
letterFlags[cursorPosition] = true;
letterCounter++;
}
}
private void doMoveCursor(int dx)
{
if(letterCounter != presentNumLetters)
{
cursorPosition = (cursorPosition + dx + presentNumLetters) % presentNumLetters;
if(cursorPosition < presentNumLetters && cursorPosition >= 0)
for(; letterFlags[cursorPosition]; cursorPosition = (cursorPosition + dx + presentNumLetters) % presentNumLetters);
}
}
private void doClear()
{
playerWord = "";
for(int i = presentNumLetters - 1; i >= 0; i--)
if(letterFlags[i])
{
letterCounter--;
int temp = letterFrame[i];
letterFrame[i] = blankFrame[letterCounter];
blankFrame[letterCounter] = temp;
letterFlags[i] = false;
}
letterCounter = 0;
}
private void doBack()
{
if(playerWord.length() >= 1)
{
playerWord = playerWord.substring(0, playerWord.length() - 1);
if(letterCounter > 0)
{
for(int i = presentNumLetters - 1; i >= 0; i--)
{
if(!letterFlags[i])
continue;
letterCounter--;
int temp = letterFrame[i];
letterFrame[i] = blankFrame[letterCounter];
blankFrame[letterCounter] = temp;
letterFlags[i] = false;
cursorPosition = i;
break;
}
}
}
}
private void doEnter()
{
calculateWord(playerWord);
playerWord = "";
for(int i = presentNumLetters - 1; i >= 0; i--)
if(letterFlags[i])
{
letterCounter--;
int temp = letterFrame[i];
letterFrame[i] = blankFrame[letterCounter];
blankFrame[letterCounter] = temp;
letterFlags[i] = false;
}
letterCounter = 0;
}
private void doTwist()
{
randomizeFrames();
}
public void randomizeFrames()
{
Random rand = new Random();
int y[] = new int[6];
int counter = 0;
for(int i = 0; i < presentNumLetters; i++)
if(!letterFlags[i])
y[counter++] = letterFrame[i];
for(int i = 0; i < counter; i++)
{
int r = Math.abs(rand.nextInt()) % counter;
transpose(y, i, r);
}
counter = 0;
for(int i = 0; i < presentNumLetters; i++)
if(!letterFlags[i])
letterFrame[i] = y[counter++];
rand = null;
}
public void transpose(int a[], int i, int j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public void gameContinue()
{
timer.resume();
gamePaused = false;
}
public boolean isPaused()
{
return gamePaused;
}
private void calculateWord(String s)
{
boolean found = false;
int c = -1;
if(s.length() > 0)
{
for(int i = 0; i < presentNumWords; i++)
{
System.out.println(s + "-" + presentWords[i]);
if(s.compareTo(presentWords[i]) == 0)
{
System.out.println("Congratulations' The word is in Miruko's Dictionary!");
found = true;
c = i;
if(Resources.withSound)
try
{
correctSound.play(1);
}
catch(Exception e)
{
e.printStackTrace();
}
if(wordGuessed[i])
found = false;
i = presentNumWords;
}
}
if(found)
{
playerScore += scoreWord;
guessedWords++;
wordGuessed[c] = true;
} else
{
not = true;
notCounter = 0;
}
}
if(guessedWords == presentNumWords)
{
isNextLevel = true;
playerScore = playerScore + 100;
}
}
public void pause()
{
timer.pause();
}
public void nextLevel()
throws Exception
{
level++;
guessedWords = 0;
playerScore = playerScore + scoreLevel;
if(level < 5)
{
notRepaint = true;
presentWordSet = null;
presentWords = null;
try
{
presentWordSet = WordBuilder.wordSets[wordIndex[level]];
presentNumLetters = presentWordSet.getNumChars();
presentAsc = presentWordSet.getAscLetters();
presentWords = presentWordSet.getWords();
presentNumWords = presentWordSet.getNumWords();
wordGuessed = new boolean[presentNumWords];
time = 0x249f0 - (level + 1) * 300 * 60;
if(time < 45000)
time = 45000;
firstTime = time;
timer = new StringTimer(time, this);
letterFlags = new boolean[presentNumLetters];
wordX = new int[presentNumWords];
wordY = new int[presentNumWords];
wordWidth = new int[presentNumWords];
for(int i = 0; i < 6; i++)
{
letterSprite[i].setX(90 + i * 13);
if(i % 2 == 1)
letterSprite[i].setY(56);
else
letterSprite[i].setY(60);
letterSprite[i].setVisible(true);
letterFrame[i] = presentAsc[i];
letterSprite[i].setFrame(letterFrame[i]);
blankSprite[i].setX(90 + i * 13);
blankSprite[i].setY(25);
letterSprite[i].setVisible(true);
blankFrame[i] = 26;
blankSprite[i].setFrame(blankFrame[i]);
}
for(int i = 0; i < presentNumLetters; i++)
{
letterFlags[i] = false;
letterSprite[i].setFrame(letterFrame[i]);
blankSprite[i].setFrame(blankFrame[i]);
}
for(int i = presentNumLetters; i < 6; i++)
{
letterFlags[i] = true;
letterSprite[i].setFrame(letterFrame[i]);
blankSprite[i].setFrame(blankFrame[i]);
}
for(int i = 0; i < presentNumWords; i++)
{
wordWidth[i] = Font.getDefaultFont().stringWidth(presentWords[i]);
wordGuessed[i] = false;
}
balloonSprite.setFrame(0);
}
catch(Exception e)
{
e.printStackTrace();
throw new Exception("Memory Full");
}
for(int i = 0; i < presentNumWords - 1; i++)
{
wordX[i] = 4;
wordY[i] = 1 + i * 7;
if(wordWidth[i] + wordWidth[i + 1] + 15 < 85)
{
i++;
wordX[i] = 52;
wordY[i] = wordY[i - 1];
}
}
wordX[presentNumWords - 1] = 4;
if(wordY[presentNumWords - 2] == wordY[presentNumWords - 3])
wordY[presentNumWords - 1] = 1 + (presentNumWords - 1) * 7;
else
wordY[presentNumWords - 1] = 1 + (presentNumWords - 1) * 7 + 7;
notCounter = 0;
not = false;
cursorPosition = 0;
letterCounter = 0;
balloonFrame = 0;
n = 0;
m = 0;
up = true;
down = false;
saved = false;
notRepaint = false;
playerWord = "";
System.gc();
} else
{
gameOver = true;
}
}
private static void getLength()
{
for(last = 0; last < 5 && Resources.highscore[last] != null; last++);
}
private static boolean saveScore()
{
String score = Resources.score + "." + Record.getLevel(Resources.level) + "." + Resources.name + ".";
getLength();
for(int i = 0; i < 5; i++)
{
if(Resources.highscore[i] == null)
{
Resources.highscore[i] = score;
score = null;
return true;
}
if(Resources.score > getScore(Resources.highscore[i]))
{
if(i == 4)
{
Resources.highscore[i] = score;
return true;
}
for(int j = last; j > i; j--)
{
if(j >= 5)
j--;
Resources.highscore[j] = Resources.highscore[j - 1];
}
Resources.highscore[i] = score;
return true;
}
}
return false;
}
private static int getScore(String s)
{
int l = 0;
String str = "";
char c;
do
{
c = s.charAt(l);
if(c != '.')
str = str + c;
l++;
} while(c != '.');
return Integer.parseInt(str.trim());
}
public void countdownPlay()
{
if(Resources.withSound)
try
{
countdownSound.play(1);
}
catch(Exception e) { }
}
static
{
TIMEFIRST = 2500;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -