Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package puplets;
- import puplet.*;
- public class Woordrader extends Puplet {
- public boolean aangemeld = false;
- public char geradenletter = 'x';
- public String woord;
- public int woordlengte;
- public int afktime = 0; // Per 3 seconds
- private int counter;
- public boolean galg = false;
- public int galgbeurt = 1;
- public String naarwie;
- public String output = "";
- public boolean ingame = false;
- public String fZender,fType,fBericht,fOntvanger = ""; //Gebruikt in [decodeFrame]
- public Woordrader()
- {
- super("");
- String[] menus = {"OK"};
- makeMenu(menus);
- messageSet("Vul je naam in!");
- }
- //This method creates a byte array, and fills it using the parameters. This is a quick way to create
- //a "frame" for the wireless Puplet protocol.
- public byte[] composeFrame(String sendTo, String type, String message) {
- byte[] result = new byte[32];
- result = fillByteArrayWithString(getName(),0,7,result);
- result = fillByteArrayWithString(sendTo,7,14,result);
- result = fillByteArrayWithString(type,14,1,result);
- result = fillByteArrayWithString(message,15,16,result);
- return result;
- }
- public void decodeFrame(byte[] frame) {
- fZender = bytesToString(frame,0,7);
- fOntvanger = bytesToString(frame,7,14);
- fType = bytesToString(frame,14,1);
- fBericht = bytesToString(frame,15,16);
- }
- //this method fills a portion of a byte array with the ASCII representation of the characters is a string.
- //the portion of the byte array that needs to be filled is specified with [offset] and [length]
- //if [length] is longer than the specified string, the remaining bytes will be [0].
- public byte[] fillByteArrayWithString(String input, int offset, int length, byte[] arr) {
- StringBuffer namebuf = new StringBuffer(input);
- for (int i=0; i<length; i++){
- if (i<namebuf.length()){
- arr[i+offset]= (byte)namebuf.charAt(i);
- } else { //[i] is more than the length of the string: set to [0].
- arr[i+offset]= 0;
- }
- }
- return arr;
- }
- public void messageSet(String message) {
- setMessage(message);
- output = message;
- }
- public String messageGet() {
- return output;
- }
- public boolean hasCharacter(String word,String character)
- {
- for(int i=0;i<word.length();i++)
- {
- if (word.substring(i, i+1).equals(character))
- {
- return true;
- }
- }
- return false;
- }
- public void timeEvent()
- {
- counter ++;
- if (counter>9)
- {
- counter = 0;
- }
- if (counter == 0)
- {
- if (galg)
- {
- setImage("galg"+galgbeurt);
- }
- else
- {
- afktime ++;
- if (afktime>=5)
- {
- setImage("sleepy");
- }
- else
- {
- setImage("normal");
- }
- }
- }
- }
- public boolean isAlphaNumeric(String word)
- {
- char character;
- for(int i = 0;i < word.length();i++)
- {
- character = word.charAt(i);
- if(!(
- ((byte) character >= 48 && (byte) character <= 57) ||
- ((byte) character >= 65 && (byte) character <= 90) ||
- ((byte) character >= 97 && (byte) character <= 122)
- ))
- {
- return false;
- }
- }
- return true;
- }
- //Zet een array van Bytes om naar een String. vanaf [offset] (inclusief) check ik [length] (exclusief) bytes.
- public String bytesToString(byte[] abytes, int offset, int length) {
- String result = "";
- for(int i=0;i<length;i++){
- if (abytes[i+offset]==0) {
- break;
- }
- result = result + (char) abytes[i+offset];
- }
- return result;
- }
- public void messageAppend(String message) {
- String original = messageGet();
- messageSet(original + message);
- }
- public void messageAppendLn(String message) {
- messageAppend("\n" + message);
- }
- public void menuEvent(String menunaam)
- {
- afktime = 0;
- if (menunaam.equals("Verlaat het spel"))
- {
- messageSet("Je hebt het spel verlaten.");
- ragequit();
- }
- if (menunaam.equals("Raden"))
- {
- geradenletter = getMessage().charAt(0);
- sendFrame(composeFrame(naarwie, "G", getMessage().substring(0, 1)));
- }
- if (menunaam.equals("Galg aan/uit"))
- {
- if(galg)
- {
- galg = false;
- setImage("normal");
- }
- else
- {
- galg = true;
- setImage("galg"+galgbeurt);
- }
- }
- if (menunaam.equals("Spelen"))
- {
- messageSet("Ik wil spelen!");
- messageAppendLn(naarwie);
- sendFrame(composeFrame(naarwie, "M", getMessage()));
- messageAppendLn("Wacht op antwoord...");
- }
- if (menunaam.equals("Naam wijzigen")||menunaam.equals("OK"))
- {
- messageSet(discoverPuplets().length+" andere puplets online.");
- String newname = getMessage();
- if(isAlphaNumeric(newname) && newname.length() <8 && newname.length()>0)
- {
- setName(newname);
- messageAppendLn("Welkom, "+newname+"!\nWacht nu op iemand die wil spelen.");
- clearMenu();
- aangemeld = true;
- String[] menus = {"Naam wijzigen","Galg aan/uit"};
- makeMenu(menus);
- }
- else
- {
- messageSet("De naam is niet goed ingevoerd!\n- De naam mag maximaal 7 tekens hebben\n- De naam moet minimaal 1 teken hebben\n- De tekens a-z, A-Z, 0-9 mogen gebruikt worden.");
- }
- }
- }
- public boolean forMe()
- {
- return fOntvanger.equals(getName());
- }
- public void ragequit()
- {
- sendFrame(composeFrame(naarwie, "Q", ""));
- messageAppendLn(discoverPuplets().length+" andere puplet(s) online.");
- ingame = false;
- messageAppendLn("Welkom, "+getName()+"!\nWacht nu op iemand die wil spelen.");
- clearMenu();
- aangemeld = true;
- String[] menus = {"Naam wijzigen","Galg aan/uit"};
- makeMenu(menus);
- }
- public void frameEvent(byte[] frame)
- {
- if (aangemeld)
- {
- //Zet het frame om naar Strings
- decodeFrame(frame);
- if (!ingame) {
- if(fType.equalsIgnoreCase("P"))
- {
- messageSet(fZender + " wil spelen!");
- clearMenu();
- String[] menu = {"Spelen","Naam wijzigen","Galg aan/uit"};
- makeMenu(menu);
- naarwie = fZender;
- messageAppendLn(fBericht);
- }
- if(fType.equalsIgnoreCase("S") && forMe())
- {
- int getal = frame[15];
- messageSet(String.valueOf(getal) + " aantal tekens.");
- woordlengte = getal;
- woord = "";
- for(int i=0;i<woordlengte;i++)
- woord += ".";
- String menu[] = {"Raden","Galg aan/uit","Verlaat het spel"};
- clearMenu();
- makeMenu(menu);
- //naarwie= *removed* (seems pointless...)
- //instead, check if this frame is from the same one who send the "P"-frame
- ingame = true;
- messageAppendLn(woord);
- }
- //String[] menus = {"Raden","Verlaat het spel","Galg aan/uit"};
- //clearMenu();
- //makeMenu(menus);
- }
- else
- {
- if(fType.equalsIgnoreCase("Q") && forMe())
- {
- messageSet(fZender + "heeft het spel verlaten.");
- ragequit();
- }
- if(fType.equalsIgnoreCase("R") && forMe())
- {
- int lettersgoed = 0;
- for(int i =0;i<woordlengte;i++)
- {
- String result = fBericht;
- if (letterOK(result,i))
- {
- String c = String.valueOf(geradenletter);
- woord = woord.substring(0,i) + c + woord.substring(i+1);
- lettersgoed++;
- }
- }
- messageAppendLn(geradenletter+" kwam "+lettersgoed+" keer voor.");
- if (lettersgoed>0)
- {
- setImage("happy");
- }
- else
- {
- setImage("sad");
- galgbeurt ++;
- }
- if (galgbeurt == 9)
- {
- messageSet("Je hebt verloren!");
- //sendFrame(composeFrame(naarwie, "Q", ""));
- //Not needed here, the other knows when he won :)
- galgbeurt = 1;
- ingame = false;
- messageAppendLn(discoverPuplets().length+" andere puplet(s) online.");
- messageAppendLn("Welkom, "+getName()+"!\nWacht nu op iemand die wil spelen.");
- clearMenu();
- aangemeld = true;
- String[] menus = {"Naam wijzigen","Galg aan/uit"};
- makeMenu(menus);
- }
- messageAppendLn(woord);
- if (hasCharacter(woord,"."))
- {
- messageAppendLn("Je moet er nog een paar!");
- }
- else
- {
- messageSet("Je bent klaar!");
- ragequit();
- }
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment