Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package delli001.proj4;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class MatchThreeGUI extends JPanel {
- private static final long serialVersionUID = 1L;
- public static void main(String[] args) {
- JFrame frame = new JFrame("match three");
- MatchThreeGUI g = new MatchThreeGUI();
- frame.add(g);
- frame.setSize(600, 600);
- frame.setVisible(true);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- int drag_x, drag_y;
- MatchThree game;
- int match_height = 100;
- int match_width = 100;
- int match_x = 50;
- int match_y = 500;
- PieceRender[][] prenders;
- Font score_font = new Font("sansserif", Font.BOLD, 16);
- Piece selected;
- int state;
- MatchThreeGUI() {
- game = new MatchThree();
- state = 0;
- prepareRendering();
- this.addMouseListener(new MouseListener() {
- @Override
- public void mouseClicked(MouseEvent e) {
- int x = e.getX() / 50;
- int y = e.getY() / 50;
- if (game.validLoc(x, y)){
- if (state == 0){
- selected = game.pieces[y][x];
- selected.toggleSelect();
- prenders[y][x] = new PieceRender(selected);
- state = 1;
- }else if (state == 1){
- state = 0;
- int old_x = selected.x;
- int old_y = selected.y;
- selected.toggleSelect();
- if (game.swapPieces(selected.x,selected.y, x,y)){
- //swap successful
- prenders[y][x] = new PieceRender (selected);
- }
- prenders[old_y][old_x] = new PieceRender(game.pieces[old_y][old_x]);
- }
- repaint();
- }else if ((e.getX() > match_x)
- && (e.getX() < match_x + match_width) && (e.getY() > match_y)
- && (e.getY() < match_y + match_height)){
- game.markHorizontalMatches();
- game.markVerticalMatches();
- game.updateBoard();
- prepareRendering();
- repaint();
- }
- } // mouse click
- @Override
- public void mouseEntered(MouseEvent arg0) {
- } // not used
- @Override
- public void mouseExited(MouseEvent arg0) {
- } // not used
- @Override
- public void mousePressed(MouseEvent e) {
- int x = e.getX() / 50;
- int y = e.getY() / 50;
- // if valid, save for later so we can calculate drag amount
- if (game.validLoc(x, y)){
- drag_x = x;
- drag_y = y;
- }
- } // mousePressed
- @Override
- public void mouseReleased(MouseEvent e) {
- int x = e.getX() / 50;
- int y = e.getY() / 50;
- //horizontal drag
- if (game.validLoc(x, y)){
- if (drag_y == y){
- int offset = drag_x - x;
- if (offset < 0){
- offset += MatchThree.width;
- }
- game.horizontalRotate(y, offset);
- for (int i = 0; i < MatchThree.width; i++){
- prenders[y][i] = new PieceRender (game.pieces[y][i]);
- } // redrawing row
- repaint();
- }//checking for horizontal
- }
- if(game.validLoc(x, y)){
- if (drag_x == x){
- int offset = drag_y - y;
- if (offset < 0){
- offset += MatchThree.height;
- }
- game.verticalRotate(x,offset);
- for(int i = 0; i < MatchThree.height; i++){
- prenders[i][x] = new PieceRender (game.pieces[i][x]); //fixed the vertical glitch by switching i and x
- }
- repaint();
- }
- }
- // valid location
- } // mouse release
- }); // mouse listener
- } // constructor
- void doRendering(Graphics g) {
- // TODO: paint the pieces
- for (int y = 0; y < prenders.length; y++){
- for (int x = 0; x < prenders[y].length; x++){
- prenders[y][x].paint(g);
- }
- }
- } // do Rendering
- public void paintComponent(Graphics graphics) {
- super.paintComponent(graphics);
- // TODO: paint game
- graphics.setColor(java.awt.Color.DARK_GRAY);
- graphics.fillRect(0,0,600,600);
- // pieces
- doRendering (graphics);
- // match button
- graphics.setColor(java.awt.Color.WHITE);
- graphics.fillRect(match_x, match_y, match_width, match_height);
- graphics.setFont(score_font);
- graphics.drawString("Score: " + game.score + " Moves: " + game.moves, 350, 550);
- graphics.setColor(java.awt.Color.BLACK);
- graphics.drawString("Match",75, 550);
- }
- void prepareRendering() {
- // TODO: match drawings to underlying data
- prenders = new PieceRender[MatchThree.height][MatchThree.width]; //allocates space for 2d array
- for (int y = 0; y < MatchThree.height; y++){
- for (int x = 0; x < MatchThree.width; x++){ //off by one error NEED TO FIX
- prenders[y][x] = new PieceRender(game.pieces[y][x]);
- }
- }
- } // prepare Rendering
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement