i am running on Window 7 PC and using Ecplise IDE
Code for PC
- Code: Select all
public class C_Play extends JFrame {
JButton[] b = new JButton[28];
String[] abc = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","Solve","Quit"};
JLabel statusName = new JLabel();
JLabel statusScore = new JLabel();
JLabel word = new JLabel("Supercalifragilisticexpialidocious");
int score=0;
int wrong=0;
int index=0;
private Bluetooth btPlay=null;
boolean b1=false;
BufferedImage img = null;
BufferedImage img1 = null;
Image image = null;
Timer t1;
//boolean write=false;
public C_Play(String st, Bluetooth newBT){
btPlay=newBT;
gui(st);
t1= new Timer(1000,new btRec());
t1.start();
}
public void hangman(Graphics g, int mistake){
image = new ImageIcon("bin/Images/hangman"+mistake+".gif").getImage();
g.drawImage(image,70,60,null);
}
public void paint(Graphics g) {
super.paint(g);
System.out.println("In paint for "+index);
String msg = btPlay.readMessage();
System.out.println("paint: "+msg);
if (msg!=null)
{
if(!b1){
hangman(g,wrong);
}
if (msg.equalsIgnoreCase("finally"))
{
t1.stop();
}
System.out.println("Received NXT: "+msg);
index++;
}
else
{
System.out.println("Exit paint");
index++;
return;
}
}
public void gui(String st){
setSize(500,600);
setLocation(500,100);
setTitle("Hangman - Play");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setResizable(false);
Container c = getContentPane();
c.setLayout(new BorderLayout());
JPanel wordPanel = new JPanel();
wordPanel.add(word,BorderLayout.CENTER);
word.setFont(new Font("Arial",1,20));
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(1,7));
for(int i=0;i<7;i++){
b[i] = new JButton(abc[i]);
panel1.add(b[i]);
}
JPanel panel2 = new JPanel();
panel2.setLayout(new GridLayout(1,7));
for(int i=7;i<14;i++){
b[i] = new JButton(abc[i]);
panel2.add(b[i]);
}
JPanel panel3 = new JPanel();
panel3.setLayout(new GridLayout(1,7));
for(int i=14;i<21;i++){
b[i] = new JButton(abc[i]);
panel3.add(b[i]);
}
JPanel panel4 = new JPanel();
panel4.setLayout(new GridLayout(1,7));
for(int i=21;i<28;i++){
b[i] = new JButton(abc[i]);
panel4.add(b[i]);
}
JPanel southPanel = new JPanel();
southPanel.setLayout(new GridLayout(5,1));
southPanel.add(wordPanel);
southPanel.add(panel1);
southPanel.add(panel2);
southPanel.add(panel3);
southPanel.add(panel4);
c.add(southPanel,BorderLayout.SOUTH);
JPanel status = new JPanel();
status.setLayout(new GridLayout(1,2));
status.setBorder(BorderFactory.createLineBorder(Color.black));
status.setFont(new Font("Arial",1,15));
statusName.setText("Name: "+st );
statusScore.setText("Score: "+score);
status.add(statusName);
status.add(statusScore);
c.add(status,BorderLayout.NORTH);
ButtonHandler handler = new ButtonHandler();
for(int i=0;i<28;i++){
b[i].addActionListener(handler);
}
}
class btRec implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
repaint();
}
}
public class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==b[0]){//letter A
b1 = true;
score++;
statusScore.setText("Score: "+score);
btPlay.sendMessage("A");
}
else if(e.getSource()==b[1]){//letter B
b1=false;
wrong++;
score--;
statusScore.setText("Score: "+score);
btPlay.sendMessage("B");
}
else if(e.getSource()==b[2]){//letter C
btPlay.sendMessage("C");
}
else if(e.getSource()==b[3]){//letter D
btPlay.sendMessage("D");
}
else if(e.getSource()==b[4]){//letter E
btPlay.sendMessage("E");
}
else if(e.getSource()==b[5]){//letter F
btPlay.sendMessage("F");
}
else if(e.getSource()==b[6]){//letter G
btPlay.sendMessage("G");
}
else if(e.getSource()==b[7]){//letter H
btPlay.sendMessage("H");
}
else if(e.getSource()==b[8]){//letter I
btPlay.sendMessage("I");
}
else if(e.getSource()==b[9]){//letter J
btPlay.sendMessage("J");
}
else if(e.getSource()==b[10]){//letter K
btPlay.sendMessage("K");
}
else if(e.getSource()==b[11]){//letter L
btPlay.sendMessage("L");
}
else if(e.getSource()==b[12]){//letter M
btPlay.sendMessage("M");
}
else if(e.getSource()==b[13]){//letter N
btPlay.sendMessage("N");
}
else if(e.getSource()==b[14]){//letter O
btPlay.sendMessage("O");
}
else if(e.getSource()==b[15]){//letter P
btPlay.sendMessage("P");
}
else if(e.getSource()==b[16]){//letter Q
btPlay.sendMessage("Q");
}
else if(e.getSource()==b[17]){//letter R
btPlay.sendMessage("R");
}
else if(e.getSource()==b[18]){//letter S
btPlay.sendMessage("S");
}
else if(e.getSource()==b[19]){//letter T
btPlay.sendMessage("T");
}
else if(e.getSource()==b[20]){//letter U
btPlay.sendMessage("U");
}
else if(e.getSource()==b[21]){//letter V
btPlay.sendMessage("V");
}
else if(e.getSource()==b[22]){//letter W
btPlay.sendMessage("W");
}
else if(e.getSource()==b[23]){//letter X
btPlay.sendMessage("X");
}
else if(e.getSource()==b[24]){//letter Y
btPlay.sendMessage("Y");
}
else if(e.getSource()==b[25]){//letter Z
btPlay.sendMessage("Z");
}
else if(e.getSource()==b[26]){//Solve
}
else if(e.getSource()==b[27]){//Quit
btPlay.sendMessage("-1");
btPlay.terminateBT();
System.exit(0);
}
}
}
}
PC Bluetooth codes
- Code: Select all
import lejos.pc.comm.*;
import java.io.*;
import java.io.DataOutputStream;
import java.io.IOException;
public class Bluetooth {
NXTConnector conn = new NXTConnector();
DataOutputStream dos=null;
boolean connected=false;
DataInputStream dis=null;
public Bluetooth() {
conn.addLogListener(new NXTCommLogListener(){
public void logEvent(String message) {
System.out.println("BTSend Log.listener: "+message);
}
public void logEvent(Throwable throwable) {
System.out.println("BTSend Log.listener - stack trace: ");
throwable.printStackTrace();
}
}
);
// TODO Auto-generated constructor stub
}
public boolean connectBT()
{
connected = conn.connectTo("btspp://");
return connected;
}
public void sendMessage(String msg)
{
//byte[]sendMsg;
//sendMsg=msg.getBytes();
if(!connected)
{
System.out.println("No NXT connected");
return;
}
dos = new DataOutputStream(conn.getOutputStream());
try
{
msg=msg+"\n";
dos.writeUTF(msg);
dos.flush();
dos.close();
}
catch (IOException ioe)
{
System.out.println("IO Exception writing bytes:");
System.out.println(ioe.getMessage());
return;
}
}
@SuppressWarnings("deprecation")
public String readMessage()
{
String msg="";
dis= new DataInputStream(conn.getInputStream());
BufferedReader pcBr = new BufferedReader(new InputStreamReader(dis));
try
{
if(pcBr.ready())
{
msg=pcBr.readLine();
System.out.println("Bluetooth: "+msg);
dis.close();
pcBr.close();
}
else
{
System.out.println("no data");
dis.close();
pcBr.close();
}
}
catch(IOException ioe)
{
System.out.println("IO Exception reading bytes:");
System.out.println(ioe.getMessage());
return "-1";
}
return msg;
}
public void terminateBT()
{
try
{
conn.close();
}
catch(IOException ioe)
{
System.out.println("Error in closing connection");
System.out.println(ioe.getMessage());
}
}
}
NXT Codes
- Code: Select all
public class hMWOBT {
/**
* @param args
*/
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int PENSPEED_X = 100; // motor power for arm when drawing
int PENSPEED_D = 10;// MOTOR POWER FOR DIAGONAL LINES
String btMsg="A";
int PENSPEED_Y = -20; // motor power for wheels when drawing
int SPEEDFRONT = 40; // motor power for wheels when drawing
int SPEEDBACK = 30; // motor power for wheels when drawing
BTNXT bt = new BTNXT();
int xStep = 2;
int yStep = 20;
boolean enterWrite = false;
boolean writeDone=true;
int front = 8;
int back = 8;
// int startX,startY;
// HORIZONTAL = 7 VERTICAL = 7
//0 A = DBBBBBBBUFFFFFFFDRRRRRRRBBBBBBBUFFFFDLLLLLLLUBBBB
//1 B = DBBBBBBBUFFFFFFFDRRRRRRRBBBLLLLLLLURRRRRRRDBBBBLLLLLLLU
//2 C = DRRRRRULLLLLDBBBBBBBRRRRRRRULLLLLLL
//3 D = DRRRRRRRBBBBBBBLLLLLLLFFFFFFFUBBBBBBB
//4 E = DRRRRRRRULLLLLLLDBBBRRRRRULLLLLDBBBBRRRRRRRULLLLLLL
//5 F = DRRRRRRRULLLLLLLDBBBRRRRRULLLLLDBBBBU
//6 G = DRRRRRRULLLLLLDBBBBBBBRRRRRRRFFFLLLLLURRRRRBBBLLLLLLL // LOOK ABIT WEIRD
//7 H = DBBBBBBBUFFFFDRRRRRRRUFFFDBBBBBBBULLLLLLL
//8 I = DRRRRRRRULLLLLDBBBBBBBULLDRRRRRRRULLLLLLL
//9 J = DRRRRRRRULLLLLDBBBBBBBUDLLLLLUDFFFFUBBBBRRRRR
//10 K = RRRRRRRRRRDVVBVVBVBVBVBVBVBUDRRRRRRRRBBBBULLLLLLLLDFFFFFFFFFFFULLBBBBBBBBBBB
//11 L = DBBBBBBBBBRRRRRRRULLLLLL
//12 M = DBBBBBBBUFFFFFFFDRRRRRRUDBBBUFFFDRRRRRBBBBBBULLLLLLLLLL
//13 N = DCBCBCBCBCBCBCBFUDFFFFFFFFU // NOT COMPLETE
//14 O = DRRRRRRRRUDBBBBBBBUDLLLLLLLLUDFFFFFFFFURRRRRDBBBBBBBBULLLLL
//15 P = DRRRRRRUDBBBBUDLLLLLLUFFFFDBBBBBBBBU
//16 Q = DRRRRRRRRUDBBBBBBBUDLLLLLLLLUDFFFFFFFFURRRRRRBBBBBBDBCBCBCBU // LOOK ABIT WEIRD
//17 R = DRRRRRRUDBBBBUDLLLLLLUFFFFDBBBBBBBBURRRRRRRDFFVVFVVFVVFVVFURBBBBBBB // LOOK ABIT WEIRD
//18 S = RRRRRRRDLLLLLLLBBBBRRRRRRRBBBBLLLLLLLU
//19 T = DRRRRRRRULLLLLDBBBBBBBULL
//20 U = DBBBBBBBRRRRRRRFFFFFFFULLLLLLLBBBBBBB
//21 V = RRRRDLLBLBLBBLBBLBBLBBLBLFFLFFLFFLFFLFLFLU // LOOK ABIT WEIRD
//22 W = DBBBBBBBRRRRRRUDFFFFUBBBBDRRRRFFFFFFFULLLLLLLLLLLBBBBBBB
//23 X = RRRRRRRRRDVVBVVBVBVBVBVBBVBVBURRRRRRRRRFDVVFVFVFVFVFVFVVFVFURBBBBBBBBB
//24 Y = RRRRRRRRRDVVBVVBVBVBVBVBBVBVBURRRRRRRRRFVVFVFVFVDFVFVFVVFVFURRBBBBBBBBBB
//25 Z = RRDRRRRRRRRVVBVVBVBVBVBVBBVBVBUDRRRRRRRRRRULLLLLLLLLLLL
bt.connect();
String sequence="";
//btMsg="I";
//btMsg.toString();
//btMsg=btMsg.substring(2);
while (!btMsg.equalsIgnoreCase("-1"))
{
btMsg=bt.receiveBTMessage();
btMsg=btMsg.substring(2);
btMsg.toUpperCase();
/*System.out.println(btMsg);
if (btMsg.equalsIgnoreCase("a"))
{
bt.sendBTMessage("1");
}
else if (btMsg.equalsIgnoreCase("b"))
{
bt.sendBTMessage("2");
}
else if (btMsg.equalsIgnoreCase("c"))
{
bt.sendBTMessage("3");
}
else{
bt.sendBTMessage("NXT sending");
}*/
//LCD.drawString(btMsg, 0, 10);
switch(btMsg)
{
case "A":
btMsg="-2";
sequence="DBBBBBBBUFFFFFFFDRRRRRRRBBBBBBBUFFFFDLLLLLLLLLUBBBBBBBB";
break;
case "B":
btMsg="-2";
sequence="DBBBBBBBBBUFFFFFFFFFDRRRRRRRBBBBLLLLLLLLURRRRRRRRDBBBBBLLLLLLLURBBBB";
break;
case "C":
btMsg="-2";
sequence = "DRRRRRRRULLLLLLLDBBBBBBBRRRRRRRULLLLLLLBBBB";
break;
case "D":
btMsg="-2";
sequence = "DRRRRRRRRBBBBBBBBLLLLLLLLFFFFFFFFUBBBBBBBBBBBB";
break;
case "E":
btMsg="-2";
sequence = "DRRRRRRRULLLLLLLDBBBRRRRRULLLLLDBBBBRRRRRRRULLLLLLLBBBB";
break;
case "F":
btMsg="-2";
sequence = "DRRRRRRRULLLLLLLDBBBRRRRRULLLLLDBBBBUBBBB";
break;
case "G":
btMsg="-2";
sequence = "DRRRRRRULLLLLLDBBBBBBBRRRRRRRFFFLLLLLURRRRRBBBLLLLLLLBBBB";
break;
case "H":
btMsg="-2";
sequence = "DBBBBBBBBUFFFFFDRRRRRRRUFFFDBBBBBBBBULLLLLLLBBBB";
break;
case "I":
btMsg="-2";
sequence = "DRRRRRRRULLLLLDBBBBBBBULLDRRRRRRRULLLLLLLBBBB";
break;
case "J":
btMsg="-2";
sequence = "DRRRRRRRULLLLLDBBBBBBBUDLLLLLUDFFFFUBBBBRRRRBBBB";
break;
case "K":
btMsg="-2";
sequence = "RRRRRRRRRRDVVBVVBVBVBVBVBUDRRRRRRRRBBBBULLLLLLLLDFFFFFFFFFFFULLBBBBBBBBBBBBBBB";
break;
case "L":
btMsg="-2";
sequence="DBBBBBBBBBRRRRRRRULLLLLLLLBBBB";
break;
case "M":
btMsg="-2";
sequence="DBBBBBBBUFFFFFFFDRRRRRRUDBBBUFFFDRRRRRBBBBBBULLLLLLLLLLBBBB";
break;
case "N":
btMsg="-2";
//sequence="DBBBBBBBBURRRRRRRRRRRDFVVFVVFVFVFVFVFVFVFURRRRRRRRDBBBBBBBBULLLLLLLLBBBB";
sequence="RRRRRRRRRVVBVVBVBVBVBVBBVBVBRRRRRRRRRRRRFDVVFVVFVFVFVFVFVVFVFUDRBBBBBBBBBUFFFFFFFFFRRRRRRRRRRDBBBBBBBBBULLLLLLLLLLLBBBB";
break;
case "O":
btMsg="-2";
//sequence="RRRRDLLBLBLBBLBBLBBLBBLUDFFFFFFFFFFFUDRRRRRRBBBBBBBBUDLLLLLLUBBBB";
sequence="RRRRRRRRRVVBVVBVBVBVBVBBVBVBRRRRRRRRRRRRFDVVFVVFVFVFVFVFVVFVFUDRBBBBBBBBBUFFFFFFFFFDRRRRRRRRRRBBBBBBBBBLLLLLLLLLLLUBBBB";
break;
case "P":
btMsg="-2";
sequence="DRRRRRRRRUDBBBBUDLLLLLLLLUFFFFDBBBBBBBBUBBBB";
break;
case "Q":
btMsg="-2";
//sequence="DRRRRRRRRUDBBBBBBBUDLLLLLLLLUDFFFFFFFFURRRRRRBBBBBBDBCBCBCBUBBBB";
sequence="RRRRRRRRRVVBVVBVBVBVBVBBVBVBRRRRRRRRRRRRFDVVFVVFVFVFVFVUFFFFFLLLLDBBBBBBBBUFFFFFFFFDRRRRRRRRRRBBBBBBBBLLLLLLLLLLLUBBBB";
break;
case "R":
btMsg="-2";
sequence="DRRRRRRRRUDBBBBUDLLLLLLLLUFFFFDBBBBBBBBURRRRRRRDFFVVFVVFVVFVVFURBBBBBBBBBBB";
break;
case "S":
btMsg="-2";
sequence="RRRRRRRDLLLLLLLBBBBRRRRRRRBBBBLLLLLLLUBBBB";
break;
case "T":
btMsg="-2";
sequence="DRRRRRRRRRULLLLLLDBBBBBBBULLLLBBBB";
break;
case "U":
btMsg="-2";
sequence="DBBBBBBBRRRRRRRFFFFFFFULLLLLLLBBBBBBBBBBB";
break;
case "V":
btMsg="-2";
sequence="RRRRDLLBLBLBBLBBLBBLBBLBLFFLFFLFFLFFLFLFLFLUFRRRRRRRRRRRRBBBBBBBBBBBBBB";
break;
case "W":
btMsg="-2";
sequence="DBBBBBBBRRRRRRUDFFFFUBBBBDRRRRFFFFFFFULLLLLLLLLLLBBBBBBBBBBB";
break;
case "X":
btMsg="-2";
sequence="RRRRRRRRRDVVBVVBVBVBVBVBBVBVBURRRRRRRRRFDVVFVFVFVFVFVFVVFVFURBBBBBBBBBBBBB";
break;
case "Y":
btMsg="-2";
sequence="RRRRRRRRRDVVBVVBVBVBVBVBBVBVBURRRRRRRRRFVVFVFVFVDFVFVFVVFVFURRRBBBBBBBBBBBBBBB";
break;
case "Z":
btMsg="-2";
sequence="RRDRRRRRRRRVVBVVBVBVBVBVBBVBVBUDRRRRRRRRRRULLLLLLLLLBBBB";
break;
case "-1":
System.exit(0);
break;
}
if (sequence.length()>5)
{
//sequence = "RRRRRRRRRDVVBVVBVBVBVBVBBVBVBURRRRRRRRRFVVFVFVFVDFVFVFVVFVFURRBBBBBBBBBB";
for (int i = 0; i < sequence.length(); i++) {
char direction = sequence.charAt(i);
if (direction == 'L') {
Motor.B.setSpeed(PENSPEED_X);
Motor.B.rotate(xStep);
}
else if (direction == 'R') {
Motor.B.setSpeed(PENSPEED_X);
Motor.B.rotate((xStep * -1));
}
else if (direction == 'U') {
Motor.A.setSpeed(PENSPEED_Y);
Motor.A.rotate(-1 * yStep);
}
else if (direction == 'D') {
Motor.A.setSpeed(PENSPEED_Y);
Motor.A.rotate(yStep);
}
else if (direction == 'F') {
Motor.C.setSpeed(SPEEDFRONT);
Motor.C.rotate(-1 * front);
}
else if (direction == 'B') {
Motor.C.setSpeed(SPEEDBACK);
Motor.C.rotate(back);
} else if (direction == 'V') { // diagonal left
Motor.B.setSpeed(PENSPEED_D);
Motor.B.rotate(xStep);
} else if (direction == 'C') { // diagonal right
Motor.B.setSpeed(PENSPEED_D);
Motor.B.rotate(xStep * -1);
}
Delay.msDelay(500);
}
bt.sendBTMessage("finally");
}
}// end while
NXT Bluetooth code
- Code: Select all
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import lejos.nxt.LCD;
import lejos.nxt.comm.BTConnection;
import lejos.nxt.comm.Bluetooth;
public class BTNXT {
private String message;
private BTConnection btc;
private DataInputStream nxtDis;
private DataOutputStream nxtDos;
public BTNXT()
{
}
public boolean connect()
{
btc=Bluetooth.waitForConnection();
if (btc!=null)return true;
else
{
System.out.println("Connected");
return false;
}
}
public void sendBTMessage(String msg)
{
try
{
if (btc!=null)
{
nxtDos=btc.openDataOutputStream();
msg=msg+"\n";
nxtDos.writeUTF(msg);
nxtDos.flush();
nxtDos.close();
}
}
catch (Exception e)
{
System.out.println("Error found: "+e.getMessage());
}
}
public String receiveBTMessage()
{
try
{
if (btc!=null)
{
nxtDis=btc.openDataInputStream();
BufferedReader nxtBR = new BufferedReader(new InputStreamReader(nxtDis));
message=nxtBR.readLine();
nxtDis.close();
return message;
}
}
catch (Exception e)
{
System.out.println("Error found:"+e.getMessage());
}
return message;
}
}
