Skip to content
Snippets Groups Projects

Word are now scattered around. Dont go out of bounds unless there are waaaay to many letters

Merged Marcus Christopher Wildish requested to merge Fix-letters-branch2 into main
1 file
+ 79
10
Compare changes
  • Side-by-side
  • Inline
@@ -16,6 +16,7 @@ import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.utils.viewport.ScreenViewport;
import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable;
import com.sun.tools.sjavac.Log;
import com.wordbattle.game.WordBattle;
import com.wordbattle.game.model.LetterPool;
import com.wordbattle.game.network.FirebaseInterface;
@@ -23,6 +24,7 @@ import com.wordbattle.game.network.FirebaseInterface;
import org.w3c.dom.ranges.Range;
import java.util.ArrayList;
import java.util.Random;
import java.util.Stack;
import jdk.internal.org.jline.terminal.Size;
@@ -48,6 +50,8 @@ public class GamePlayView {
private boolean isTimerRunning;
private Rectangle settingsBounds;
private ArrayList<Integer> YOffsets;//used to make letters look scattered
@@ -59,6 +63,11 @@ public class GamePlayView {
Gdx.input.setInputProcessor(stage);
System.out.println("message from constructor");
settingsBounds = new Rectangle(
WordBattle.WIDTH - 100,
WordBattle.HEIGHT - 100,
@@ -92,6 +101,10 @@ public class GamePlayView {
}
public Rectangle getSettingsBounds() { return settingsBounds; }
@@ -105,6 +118,7 @@ public class GamePlayView {
isTimerRunning = false; // Stop the timer when it reaches 0
// Handle time out logic
}
}
}
@@ -114,8 +128,17 @@ public class GamePlayView {
letterPool = new LetterPool(currentWord, 5, pin); // Or however you decide the number of extra letters
letterBoxBounds = new Rectangle[currentWord.length()];
filledBoxes = new Character[currentWord.length()];
Random rand = new Random();
YOffsets= new ArrayList<>(letterPool.getLetters().size());
for (int i=0; i<letterPool.getLetters().size();i++){
YOffsets.add(rand.nextInt(200)-100);
}
}
public void render(SpriteBatch sb) {
if (shapeRenderer == null) {
shapeRenderer = new ShapeRenderer();
@@ -125,39 +148,79 @@ public class GamePlayView {
letters = letterPool.getLetters();
letterBounds = new Rectangle[letters.size()];
float letterSpacing = 100;
float totalWidthLetter = ((((float) letters.size() * letterSpacing)) / 2);
float letterStartX = ((cam.viewportWidth - totalWidthLetter) - 2*letterSpacing) / 2;
//float letterStartX = ((cam.viewportWidth - totalWidthLetter) - 2*letterSpacing) / 2;
float letterStartX=100;
float letterStartY = cam.viewportHeight / 2;
sb.setProjectionMatrix(cam.combined);
sb.begin(); // Begin the SpriteBatch for other rendering
sb.draw(backgroundTexture, 0, 0, cam.viewportWidth, cam.viewportHeight);
float letterStartYBaseEven = 700; // Midpoint for range 500 to 900
float letterStartYBaseOdd = -550; // Midpoint for range 300 to 800
int num=0;
float yPos=0;
for (int i = 0; i < letters.size(); i++) {
// Calculate the position for each letter
float x = letterStartX + i * letterSpacing;
float y;
if (i % 2 == 0) {
float xPos = (float) (letterStartX + i *letterSpacing/2);
if (num == 0) {
// For even indices, use the range 500 to 900
y = letterStartY + 700; // Alternate within the range
} else {
yPos = letterStartY + 750 + YOffsets.get(i); // Alternate within the range
}
if(num==1) {
// For odd indices, use the range 300 to 800
y = letterStartY - 400;// Alternate within the range
x -= letterSpacing;
yPos = letterStartY +400 + YOffsets.get(i);// Alternate within the range
}
if(num==2){
yPos = letterStartY -350 + YOffsets.get(i);// Alternate within the range
}
if(num==3){
yPos = letterStartY -750 + YOffsets.get(i);// Alternate within the range
num=-1;
}
// Draw each letter, here you might want to draw a background texture for the letter
font.setColor(Color.GREEN);
font.draw(sb, letters.get(i).toString(), x, y);
letterBounds[i] = new Rectangle(x, y-120, 120, 120);
font.draw(sb, letters.get(i).toString(), xPos, yPos);
letterBounds[i] = new Rectangle(xPos, yPos - 120, 120, 120);
System.out.println("printed "+ i);
num++;
}
// Draw time
font.draw(sb, "Time: " + String.format("%o", Math.round(timeLeft)), cam.viewportWidth / 2 - 200, cam.viewportHeight - 200);
@@ -193,6 +256,7 @@ public class GamePlayView {
}
shapeRenderer.end();
sb.begin(); // Begin SpriteBatch again
@@ -244,6 +308,8 @@ public class GamePlayView {
this.filledBoxes = filledBoxes;
}
public void dispose() {
shapeRenderer.dispose();
}
@@ -271,3 +337,6 @@ public class GamePlayView {
return maxTime;
}
}
Loading