java - Can I get booleans to work between classes -
ok want make pong, have basic code want add option change colour of paddles
main.java: import java.awt.*; import java.awt.event.keyadapter; import java.awt.event.keyevent; import java.awt.event.mouseadapter; import java.awt.event.mouseevent; import javax.swing.*; public class main extends jframe { int x, y; //double buffering image dbimage; graphics dbg; image ball; boolean gamestarted = false; boolean options = false; boolean p1colouroption = false; boolean p2colouroption = false; boolean p1red = false; boolean p2red = false; boolean p1white = true; boolean p2white = true; boolean p1yellow = false; boolean p2yellow = false; boolean p1green = false; boolean p2green = false; //ball objects static ball b = new ball(193, 143); static ball b1 = new ball(193, 143); thread ball = new thread(b); thread p1 = new thread(b.p1); thread p2 = new thread(b.p2); //menu buttons rectangle options = new rectangle (150, 200, 100, 25); rectangle player1colour = new rectangle (150,150,100,25); rectangle player2colour = new rectangle (150,100,100,25); rectangle startbutton = new rectangle(150, 150, 100, 25); rectangle hbstartbutton = new rectangle(368, 200, 50, 100); rectangle p1red = new rectangle (150,75,100,25); rectangle p2red = new rectangle (150,75,100,25); rectangle p1white = new rectangle (150,125,100,25); rectangle p2white = new rectangle (150,125,100,25); rectangle p1yellow = new rectangle (150,175,100,25); rectangle p2yellow = new rectangle (150,175,100,25); rectangle p1green = new rectangle (150,225,100,25); rectangle p2green = new rectangle (150,225,100,25); //variables screen size int gwidth = 400, gheight = 300; //dimension of gwidth*gheight dimension screensize = new dimension(gwidth, gheight); int sety; //create constructor spawn window public main(){ imageicon = new imageicon("f:/pong/src/ballpic.png"); ball = i.getimage(); this.settitle("pong"); this.setsize(screensize); this.setresizable(false); this.setdefaultcloseoperation(jframe.exit_on_close); this.setvisible(true); this.setbackground(color.black); this.addkeylistener(new keyhandler()); this.addmouselistener(new mousehandler()); this.addmousemotionlistener(new mousehandler()); this.setlocationrelativeto(null); x= 370; y = 140; } public static void main(string[] args){ main m = new main(); } public void startgame(){ gamestarted = true; ball.start(); p1.start(); p2.start(); } public void pausegame(){ gamestarted = false; options = false; p1colouroption = false; p2colouroption = false; } public void buttonpressed(){ options = false; p1colouroption = false; p2colouroption = false; } @override public void paint(graphics g){ dbimage = createimage(getwidth(), getheight()); dbg = dbimage.getgraphics(); draw(dbg); g.drawimage(dbimage, 0, 0, this); } public void draw(graphics g){ //menu if(!gamestarted){ if(p1colouroption){ g.setcolor(color.red); g.fillrect(p1red.x, p1red.y, p1red.width, p1red.height); g.setfont(new font("arial", font.bold, 12)); g.setcolor(color.black); g.drawstring("red", p1red.x+10, p1red.y+15); g.setcolor(color.white); g.fillrect(p1white.x,p1white.y,p1white.width,p1white.height); g.setcolor(color.black); g.drawstring("white",p1white.x+10, p1white.y+15); g.setcolor(color.yellow); g.fillrect(p1yellow.x,p1yellow.y,p1yellow.width,p1yellow.height); g.setcolor(color.black); g.drawstring("yellow", p1yellow.x+10, p1yellow.y+15); g.setcolor(color.green); g.fillrect(p1green.x, p1green.y, p1green.width, p1green.height); g.setcolor(color.black); g.drawstring("green", p1green.x+10, p1green.y+15); } else{ if(options){ g.setcolor(color.white); g.fillrect(player1colour.x, player1colour.y, player1colour.width, player1colour.height); g.setfont(new font("arial", font.bold, 12)); g.setcolor(color.black); g.drawstring("player 1 colour", player1colour.x+10, player1colour.y+15); g.setcolor(color.white); g.fillrect(player2colour.x, player2colour.y, player2colour.width, player2colour.height); g.setcolor(color.black); g.drawstring("player 2 colour", player2colour.x+10, player2colour.y+15); } else{ g.setfont(new font("arial", font.bold, 26)); g.setcolor(color.white); g.drawstring("pong", 165, 75); g.setcolor(color.white); g.fillrect(startbutton.x, startbutton.y, startbutton.width, startbutton.height); g.setfont(new font("arial", font.bold, 12)); g.setcolor(color.black); g.drawstring("start game", startbutton.x+20, startbutton.y+17); g.setcolor(color.white); g.fillrect(options.x, options.y, options.width, options.height); g.setcolor(color.black); g.drawstring("options", options.x+17, options.y+20); } } } else{ //game drawings b.draw(g); if(p1red){ g.setcolor(color.red); b.p1.draw(g); } else{ b.p1.draw(g); } b.p2.draw(g); //scores g.setcolor(color.white); g.drawstring(""+b.p1score, 125, 50); g.drawstring(""+b.p2score, 300, 50); } repaint(); } ////////event listener classes///////// public class keyhandler extends keyadapter { int y; @override public void keypressed(keyevent e){ b.p1.keypressed(e); b.p2.keypressed(e); if(e.getkeycode() == e.vk_p) pausegame(); } public void keyreleased(keyevent e){ b.p1.keyreleased(e); b.p2.keyreleased(e); } } ///////end event listener classes///// public class mousehandler extends mouseadapter { @override public void mousemoved(mouseevent e){ } @override public void mousepressed(mouseevent e){ int mx = e.getx(); int = e.gety(); if(!options){ if(mx > startbutton.x && mx < startbutton.x+startbutton.width && > startbutton.y && < startbutton.y+startbutton.height){ startgame(); } if(mx > options.x && mx < options.x+options.width && > options.y && < options.y+options.height){ options = true; } } else{ if(mx > player1colour.x && mx < player1colour.x+player1colour.width && > player1colour.y && < player1colour.y+player1colour.height){ p1colouroption = true; } } if(p1colouroption){ if(mx > p1red.x && mx < p1red.x+p1red.width && > p1red.y && < p1red.y+p1red.height){ p1red = true; p1green = false; p1yellow = false; p1white = false; buttonpressed(); } } } } }
paddle.java:
import java.awt.color; import java.awt.graphics; import java.awt.rectangle; import java.awt.event.keyevent; public class paddle implements runnable { int x, y, ydirection, id; boolean p1red = false; boolean p2red = false; boolean p1white = true; boolean p2white = true; boolean p1yellow = false; boolean p2yellow = false; boolean p1green = false; boolean p2green = false; rectangle paddle; public paddle(int x, int y, int id){ this.x = x; this.y = y; this.id = id; paddle = new rectangle(x, y, 10, 50); } public void keypressed(keyevent e){ switch(id){ default: system.out.println("please enter valid id in paddle constructor"); break; case 1: if(e.getkeycode() == e.vk_w){ setydirection(-1); } if(e.getkeycode() == e.vk_s){ setydirection(1); } break; case 2: if(e.getkeycode() == e.vk_up){ setydirection(-1); } if(e.getkeycode() == e.vk_down){ setydirection(+1); } break; } } public void keyreleased(keyevent e){ switch(id){ default: system.out.println("please enter valid id in paddle constructor"); break; case 1: if(e.getkeycode() == e.vk_w){ setydirection(0); } if(e.getkeycode() == e.vk_s){ setydirection(0); } break; case 2: if(e.getkeycode() == e.vk_up){ setydirection(0); } if(e.getkeycode() == e.vk_down){ setydirection(0); } break; } } public void setydirection(int ydir){ ydirection = ydir; } public void move(){ paddle.y += ydirection; if(paddle.y <= 15) paddle.y = 225; if(paddle.y >= 250) paddle.y = 25; } public void draw(graphics g){ switch(id){ default: system.out.println("please enter valid id in paddle constructor"); break; case 1: if(p1white){ g.setcolor(color.white); } if(p1green){ g.setcolor(color.green); } if(p1red){ g.setcolor(color.red); } if(p1yellow){ g.setcolor(color.yellow); } g.fillrect(paddle.x, paddle.y, paddle.width, paddle.height); break; case 2: if(p2white){ g.setcolor(color.white); } if(p2green){ g.setcolor(color.green); } if(p2red){ g.setcolor(color.red); } if(p2yellow){ g.setcolor(color.yellow); } g.fillrect(paddle.x, paddle.y, paddle.width, paddle.height); break; } } @override public void run() { try{ while(true){ move(); thread.sleep(8); } }catch(exception e){system.err.println(e.getmessage());} } }
so there anyway boolean in main.java trigger booleans in paddle.java
you can this. pretty simple:
public class main extends jframe { public boolean p1red = false; public boolean p2red = false; }
and, threads, call p1red , p2red this:
public class paddle implements runnable { boolean foo; //... foo = main.p1red; }
you don't need create new main() class within threads. call main.p1red
code, , accessed.
Comments
Post a Comment