Guest User

Untitled

a guest
Jan 23rd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.99 KB | None | 0 0
  1.  
  2. package puplets;
  3.  
  4. import puplet.*;
  5.  
  6. public class Woordrader extends Puplet {
  7.  
  8. public boolean aangemeld = false;
  9. public char geradenletter = 'x';
  10. public String woord;
  11. public int woordlengte;
  12. public int afktime = 0; // Per 3 seconds
  13. private int counter;
  14. public boolean galg = false;
  15. public int galgbeurt = 1;
  16. public String naarwie;
  17. public String output = "";
  18. public boolean ingame = false;
  19. public String fZender,fType,fBericht,fOntvanger = ""; //Gebruikt in [decodeFrame]
  20.  
  21. public Woordrader()
  22. {
  23. super("");
  24. String[] menus = {"OK"};
  25. makeMenu(menus);
  26. messageSet("Vul je naam in!");
  27. }
  28.  
  29. //This method creates a byte array, and fills it using the parameters. This is a quick way to create
  30. //a "frame" for the wireless Puplet protocol.
  31. public byte[] composeFrame(String sendTo, String type, String message) {
  32. byte[] result = new byte[32];
  33.  
  34. result = fillByteArrayWithString(getName(),0,7,result);
  35.  
  36. result = fillByteArrayWithString(sendTo,7,14,result);
  37.  
  38. result = fillByteArrayWithString(type,14,1,result);
  39.  
  40. result = fillByteArrayWithString(message,15,16,result);
  41. return result;
  42. }
  43.  
  44. public void decodeFrame(byte[] frame) {
  45. fZender = bytesToString(frame,0,7);
  46. fOntvanger = bytesToString(frame,7,14);
  47. fType = bytesToString(frame,14,1);
  48. fBericht = bytesToString(frame,15,16);
  49. }
  50.  
  51. //this method fills a portion of a byte array with the ASCII representation of the characters is a string.
  52. //the portion of the byte array that needs to be filled is specified with [offset] and [length]
  53. //if [length] is longer than the specified string, the remaining bytes will be [0].
  54. public byte[] fillByteArrayWithString(String input, int offset, int length, byte[] arr) {
  55. StringBuffer namebuf = new StringBuffer(input);
  56.  
  57. for (int i=0; i<length; i++){
  58. if (i<namebuf.length()){
  59. arr[i+offset]= (byte)namebuf.charAt(i);
  60. } else { //[i] is more than the length of the string: set to [0].
  61. arr[i+offset]= 0;
  62. }
  63. }
  64.  
  65. return arr;
  66. }
  67.  
  68. public void messageSet(String message) {
  69. setMessage(message);
  70. output = message;
  71. }
  72.  
  73. public String messageGet() {
  74. return output;
  75. }
  76.  
  77. public boolean hasCharacter(String word,String character)
  78. {
  79. for(int i=0;i<word.length();i++)
  80. {
  81. if (word.substring(i, i+1).equals(character))
  82. {
  83. return true;
  84. }
  85. }
  86.  
  87. return false;
  88. }
  89.  
  90. public void timeEvent()
  91. {
  92. counter ++;
  93. if (counter>9)
  94. {
  95. counter = 0;
  96. }
  97. if (counter == 0)
  98. {
  99. if (galg)
  100. {
  101. setImage("galg"+galgbeurt);
  102. }
  103. else
  104. {
  105. afktime ++;
  106. if (afktime>=5)
  107. {
  108. setImage("sleepy");
  109. }
  110. else
  111. {
  112. setImage("normal");
  113. }
  114. }
  115. }
  116. }
  117.  
  118. public boolean isAlphaNumeric(String word)
  119. {
  120. char character;
  121. for(int i = 0;i < word.length();i++)
  122. {
  123. character = word.charAt(i);
  124. if(!(
  125. ((byte) character >= 48 && (byte) character <= 57) ||
  126. ((byte) character >= 65 && (byte) character <= 90) ||
  127. ((byte) character >= 97 && (byte) character <= 122)
  128. ))
  129. {
  130. return false;
  131. }
  132. }
  133. return true;
  134. }
  135.  
  136. //Zet een array van Bytes om naar een String. vanaf [offset] (inclusief) check ik [length] (exclusief) bytes.
  137. public String bytesToString(byte[] abytes, int offset, int length) {
  138. String result = "";
  139.  
  140. for(int i=0;i<length;i++){
  141. if (abytes[i+offset]==0) {
  142. break;
  143. }
  144. result = result + (char) abytes[i+offset];
  145. }
  146.  
  147. return result;
  148. }
  149.  
  150. public void messageAppend(String message) {
  151. String original = messageGet();
  152. messageSet(original + message);
  153. }
  154.  
  155. public void messageAppendLn(String message) {
  156. messageAppend("\n" + message);
  157. }
  158.  
  159. public void menuEvent(String menunaam)
  160. {
  161. afktime = 0;
  162. if (menunaam.equals("Verlaat het spel"))
  163. {
  164. messageSet("Je hebt het spel verlaten.");
  165. ragequit();
  166. }
  167. if (menunaam.equals("Raden"))
  168. {
  169. geradenletter = getMessage().charAt(0);
  170. sendFrame(composeFrame(naarwie, "G", getMessage().substring(0, 1)));
  171. }
  172.  
  173. if (menunaam.equals("Galg aan/uit"))
  174. {
  175. if(galg)
  176. {
  177. galg = false;
  178. setImage("normal");
  179. }
  180. else
  181. {
  182. galg = true;
  183. setImage("galg"+galgbeurt);
  184. }
  185. }
  186. if (menunaam.equals("Spelen"))
  187. {
  188. messageSet("Ik wil spelen!");
  189. messageAppendLn(naarwie);
  190. sendFrame(composeFrame(naarwie, "M", getMessage()));
  191. messageAppendLn("Wacht op antwoord...");
  192. }
  193. if (menunaam.equals("Naam wijzigen")||menunaam.equals("OK"))
  194. {
  195. messageSet(discoverPuplets().length+" andere puplets online.");
  196. String newname = getMessage();
  197. if(isAlphaNumeric(newname) && newname.length() <8 && newname.length()>0)
  198. {
  199. setName(newname);
  200. messageAppendLn("Welkom, "+newname+"!\nWacht nu op iemand die wil spelen.");
  201. clearMenu();
  202. aangemeld = true;
  203. String[] menus = {"Naam wijzigen","Galg aan/uit"};
  204. makeMenu(menus);
  205. }
  206. else
  207. {
  208. 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.");
  209. }
  210. }
  211. }
  212.  
  213. public boolean forMe()
  214. {
  215. return fOntvanger.equals(getName());
  216. }
  217.  
  218. public void ragequit()
  219. {
  220. sendFrame(composeFrame(naarwie, "Q", ""));
  221. messageAppendLn(discoverPuplets().length+" andere puplet(s) online.");
  222. ingame = false;
  223. messageAppendLn("Welkom, "+getName()+"!\nWacht nu op iemand die wil spelen.");
  224. clearMenu();
  225. aangemeld = true;
  226. String[] menus = {"Naam wijzigen","Galg aan/uit"};
  227. makeMenu(menus);
  228. }
  229.  
  230. public void frameEvent(byte[] frame)
  231. {
  232. if (aangemeld)
  233. {
  234. //Zet het frame om naar Strings
  235. decodeFrame(frame);
  236.  
  237. if (!ingame) {
  238. if(fType.equalsIgnoreCase("P"))
  239. {
  240. messageSet(fZender + " wil spelen!");
  241. clearMenu();
  242. String[] menu = {"Spelen","Naam wijzigen","Galg aan/uit"};
  243. makeMenu(menu);
  244. naarwie = fZender;
  245. messageAppendLn(fBericht);
  246. }
  247. if(fType.equalsIgnoreCase("S") && forMe())
  248. {
  249. int getal = frame[15];
  250. messageSet(String.valueOf(getal) + " aantal tekens.");
  251. woordlengte = getal;
  252. woord = "";
  253. for(int i=0;i<woordlengte;i++)
  254. woord += ".";
  255. String menu[] = {"Raden","Galg aan/uit","Verlaat het spel"};
  256. clearMenu();
  257. makeMenu(menu);
  258. //naarwie= *removed* (seems pointless...)
  259. //instead, check if this frame is from the same one who send the "P"-frame
  260. ingame = true;
  261. messageAppendLn(woord);
  262. }
  263.  
  264. //String[] menus = {"Raden","Verlaat het spel","Galg aan/uit"};
  265. //clearMenu();
  266. //makeMenu(menus);
  267. }
  268. else
  269. {
  270. if(fType.equalsIgnoreCase("Q") && forMe())
  271. {
  272. messageSet(fZender + "heeft het spel verlaten.");
  273. ragequit();
  274. }
  275. if(fType.equalsIgnoreCase("R") && forMe())
  276. {
  277. int lettersgoed = 0;
  278. for(int i =0;i<woordlengte;i++)
  279. {
  280. String result = fBericht;
  281. if (letterOK(result,i))
  282. {
  283. String c = String.valueOf(geradenletter);
  284. woord = woord.substring(0,i) + c + woord.substring(i+1);
  285. lettersgoed++;
  286. }
  287. }
  288. messageAppendLn(geradenletter+" kwam "+lettersgoed+" keer voor.");
  289. if (lettersgoed>0)
  290. {
  291. setImage("happy");
  292. }
  293. else
  294. {
  295. setImage("sad");
  296. galgbeurt ++;
  297. }
  298. if (galgbeurt == 9)
  299. {
  300. messageSet("Je hebt verloren!");
  301. //sendFrame(composeFrame(naarwie, "Q", ""));
  302. //Not needed here, the other knows when he won :)
  303. galgbeurt = 1;
  304. ingame = false;
  305. messageAppendLn(discoverPuplets().length+" andere puplet(s) online.");
  306. messageAppendLn("Welkom, "+getName()+"!\nWacht nu op iemand die wil spelen.");
  307. clearMenu();
  308. aangemeld = true;
  309. String[] menus = {"Naam wijzigen","Galg aan/uit"};
  310. makeMenu(menus);
  311. }
  312. messageAppendLn(woord);
  313. if (hasCharacter(woord,"."))
  314. {
  315. messageAppendLn("Je moet er nog een paar!");
  316. }
  317. else
  318. {
  319. messageSet("Je bent klaar!");
  320. ragequit();
  321. }
  322. }
  323. }
  324. }
  325. }
  326. }
Add Comment
Please, Sign In to add comment