Download: jar file
GameBoardGamePlayerGameBoard.java01: import java.awt.*;
02: import javax.swing.*;
03: import java.util.*;
04:
05: public class GameBoard extends JApplet
06: {
07: Game panel;
08: public void init()
09: {
10: EventQueue.invokeLater(new Runnable() {
11: public void run()
12: {
13: panel = new Game();
14: add(panel);
15: }
16: });
17: }
18:
19: public void start() {
20: panel.start();
21: }
22:
23: public void stop() {
24: panel.stop();
25: }
26:
27: public static void main(String args[]) {
28: Game game = new Game();
29: game.start();
30: JFrame application = new JFrame("GameBoard");
31: application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
32: application.add(game);
33: application.setSize(412,425);
34: application.setVisible(true);
35: }
36:
37: }
Game.java001: import java.net.*;
002: import java.io.*;
003: import java.awt.Graphics;
004: import java.awt.event.*;
005: import javax.swing.*;
006: import javax.swing.Timer;
007: import java.util.*;
008:
009: public class Game extends JPanel {
010: ArrayList<Player> players;
011:
012: public Game ()
013: {
014: players = new ArrayList<Player>();
015: }
016:
017: public void showPlayers()
018: {
019: for (Player p: players) System.out.println(p);
020: }
021:
022: public void getStatus() {
023: URL url;
024: String name;
025: name = "https://johnloomis.org/python/db/gameboard.py?action=status";
026: char quote = '"';
027:
028: String inp;
029: String modified, player, status;
030: try {
031: url = new URL(name);
032: BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); //open input URL
033: boolean done = false;
034: while (!done) {
035: inp = in.readLine(); //read line from input, and parse as desired
036: if (inp==null) break;
037: //System.out.println("input: " + inp);
038: if (inp.charAt(0) != '"') continue;
039: modified = inp.substring(1,20);
040: inp = inp.substring(21);
041: int n1, n2, cc2;
042: n1 = inp.indexOf(quote);
043: n2 = inp.substring(n1+1).indexOf(quote);
044: player = inp.substring(n1+1,n1+n2+1);
045: inp = inp.substring(n1+n2+2);
046: StringTokenizer tokens = new StringTokenizer(inp);
047: String str;
048: int id = Integer.parseInt(tokens.nextToken());
049: int r = Integer.parseInt(tokens.nextToken());
050: int g = Integer.parseInt(tokens.nextToken());
051: int b = Integer.parseInt(tokens.nextToken());
052: double px = Double.valueOf(tokens.nextToken());
053: double py = Double.valueOf(tokens.nextToken());
054: double vx = Double.valueOf(tokens.nextToken());
055: double vy = Double.valueOf(tokens.nextToken());
056: str = tokens.nextToken();
057: str = str.substring(1,str.length()-1);
058: boolean found = false;
059: for (Player p: players) {
060: if (p.id!=id) continue;
061: found = true;
062: break;
063: }
064: if (found) continue;
065: Player p = new Player(id,player,str);
066: p.setColor(r,g,b);
067: p.setPosition(px,py);
068: p.setVelocity(vx,vy);
069: players.add(p);
070: }
071: in.close(); //when done, close the input
072: }
073: catch (MalformedURLException e) { //catch errors
074: System.out.println(e);
075: }
076: catch (IOException e) {
077: System.out.println(e);
078: }
079: }
080:
081: public void getMove() {
082: URL url;
083: String name;
084: name = "https://johnloomis.org/python/db/gameboard.py?action=move";
085: char quote = '"';
086:
087: String inp;
088: try {
089: //player tempPlayer=new player(); //current working player
090: url = new URL(name);
091: BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); //open input URL
092: boolean done = false;
093: while (!done) {
094: inp = in.readLine(); //read line from input, and parse as desired
095: if (inp==null) break;
096: //System.out.println("input: " + inp);
097: if (!inp.startsWith("id")) continue;
098: StringTokenizer tokens = new StringTokenizer(inp);
099: String str;
100: tokens.nextToken();
101: int id = Integer.parseInt(tokens.nextToken());
102: double px = Double.valueOf(tokens.nextToken());
103: double py = Double.valueOf(tokens.nextToken());
104: double vx = Double.valueOf(tokens.nextToken());
105: double vy = Double.valueOf(tokens.nextToken());
106: //System.out.printf("id %d pos (%g, %g)\n",id,px,py);
107: for (Player p: players) {
108: if (p.id != id) continue;
109: p.setPosition(px,py);
110: p.setVelocity(vx,vy);
111: break;
112: }
113: }
114: in.close(); //when done, close the input
115: }
116: catch (MalformedURLException e) { //catch errors
117: System.out.println(e);
118: }
119: catch (IOException e) {
120: System.out.println(e);
121: }
122: }
123:
124: public static void main(String[] args) {
125: Game game = new Game();
126: game.getStatus();
127: game.getMove();
128: game.showPlayers();
129: }
130:
131:
132: private Timer myTimer;
133: public void start() {
134: myTimer = new Timer(1000,new TimerHandler() ); //create our timer
135: myTimer.start(); //start the timer
136: getStatus();
137: getMove();
138: }
139:
140: public void stop() {
141: myTimer.stop();
142: }
143:
144: private class TimerHandler implements ActionListener
145: {
146: public void actionPerformed(ActionEvent actionevent)
147: {
148: getMove();
149: repaint();
150: }
151: }
152: public void paintComponent (Graphics g)
153: {
154: super.paintComponent(g);
155:
156: for(Player p : players) p.draw(g);
157: }
Player.java01: import java.awt.*;
02: import java.awt.geom.*;
03: import java.awt.Color;
04: import java.awt.Graphics;
05: import java.awt.Graphics2D;
06: import java.util.*;
07:
08: public class Player
09: {
10: int id;
11: double x; //local variables
12: double y;
13: double vx, vy;
14: Color color;
15: String name;
16: String status;
17: int radius;
18:
19: public Player() //default constructor
20: {
21: }
22: public Player(int id, String name, String status)
23: {
24: this.id = id;
25: this.name = name;
26: this.status = status;
27: radius = 17;
28: }
29:
30: public void setPosition (double px, double py)
31: {
32: x = px;
33: y = py;
34: }
35: public void setVelocity(double vx, double vy)
36: {
37: this.vx = vx;
38: this.vy = vy;
39: }
40:
41: public void setColor (int R, int G, int B) //set color
42: {
43: color = new Color(R,G,B);
44: }
45:
46: public String toString()
47: {
48: String str = name + " (" + id + "):";
49: str += " color(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")";
50: str += " position (" + x + ", " + y + ")";
51: str += " velocity (" + vx + ", " + vy + ")";
52: return str;
53: }
54:
55: public void draw(Graphics g) //plot current player to graphics window
56: {
57: g.setColor(color);
58: g.fillOval((int)(x-radius), (int) (y-radius), (int)2*radius, (int)2*radius);
59: }
60: }
Maintained by John Loomis, updated Sat Apr 05 21:14:31 2008