Hey guys i need some help im currently creating a tetris game using JAVA and so far ive been able to have my blocks stop when they reach the bottom of the JFrame and not go out of bounds. My problem is how exactly would i implement the same thing on the sides of my JFrame so when i move my block side to side it will not go off the sides of the screen and stay in bounds i appreciate any help on the matter. Thanks in advance here is my code.
import javax.swing.*;
import java.awt.*;
public class DemoTest extends JPanel {
public DemoTest() {
add(new TetrisPanel());
}
public static void main(String[] args) { {
JFrame frame = new JFrame("Tetris");
frame.setContentPane(new TetrisPanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setSize(200,453);
frame.setResizable(false);
frame.setVisible(true);
}
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class TetrisAnimation extends JPanel {
public static final int numDroppingBlocks=2;
final int board_height = 6;
final int board_width = 12;
final int MAX_X = board_height*32;
final int MAX_Y = board_width*32;
private static final int DELTA_Y = 2;
private static final int TIMER_DELAY = 20;
Image image[];
Timer pptimer;
boolean keyRight,keyLeft;
int X = 50;
int x = 32;
int y;
public TetrisAnimation() {
super();
image = new Image[4];
image[0] = Toolkit.getDefaultToolkit().getImage("tetris_yellow.png");
image[1] = Toolkit.getDefaultToolkit().getImage("tetris_blue.png");
image[2] = Toolkit.getDefaultToolkit().getImage("tetris_green.png");
image[3] = Toolkit.getDefaultToolkit().getImage("tetris_red.png");
setFocusable(true);
TetrisMove tetris_move = new TetrisMove(); // Make a new video game KeyListener
addKeyListener(tetris_move);
setBackground(Color.WHITE);
pptimer = new Timer(TIMER_DELAY, new TimerAction());
pptimer.start();
}
public void setAnimation(boolean OnandOff) {
if (OnandOff) {
pptimer.start();
} else {
pptimer.stop();
}
}
private class TetrisMove implements KeyListener {
public void keyTyped(KeyEvent k){}
public void keyPressed(KeyEvent k){
switch (k.getKeyCode()){
case KeyEvent.VK_LEFT:
keyLeft = true;
break;
case KeyEvent.VK_RIGHT:
keyRight = true;
break;
}
}
public void keyReleased(KeyEvent k) {
switch (k.getKeyCode()){
case KeyEvent.VK_LEFT:
keyLeft = false;
break;
case KeyEvent.VK_RIGHT:
keyRight = false;
break;
}
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
// draw the "stop" line for the animation
g.setColor(Color.black);
g.drawLine(0, MAX_Y, getWidth(), MAX_Y);
g.drawImage(image[0],X,y,this);
}
class TimerAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (keyLeft){
X-=5;
}
else if (keyRight) {
X+=5;
}
y += DELTA_Y;
if (y + x >= MAX_Y) {
setAnimation(false);
}
repaint();
}
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
class TetrisPanel extends JPanel {
TetrisAnimation pa;
public TetrisPanel() {
pa = new PuyoAnimation();
JButton startButton = new JButton("Start");
JButton stopButton = new JButton("Stop");
startButton.addActionListener(new Start());
stopButton.addActionListener(new Stop());
JPanel button = new JPanel();
button.setLayout(new FlowLayout());
button.add(startButton);
button.add(stopButton);
this.setLayout(new BorderLayout());
this.add(button, BorderLayout.SOUTH);
this.add(pa,BorderLayout.CENTER);
}
class Start implements ActionListener {
public void actionPerformed(ActionEvent e) {
pa.setAnimation(true);
}
}
class Stop implements ActionListener {
public void actionPerformed(ActionEvent e) {
pa.setAnimation(false);
}
}
}//endclass