Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.64 KB | None | 0 0
  1. #include "mbed.h"
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <stdio.h>
  6.  
  7. using namespace std;
  8.  
  9. // Interaktive knapper
  10. InterruptIn knappSpiller1(p5);
  11. InterruptIn knappSpiller2(p6);
  12. InterruptIn knappAvslutt(p7);
  13.  
  14. // Porter til "spillelys"
  15. DigitalOut myled(LED1);
  16. DigitalOut bargraph[5] = {p26, p27, p28, p29, p30};
  17. DigitalOut bsone[4] = {p21, p22, p23, p24};
  18. DigitalOut led1(LED1), led2(LED2);
  19. BusOut buss(p26, p27, p28, p29, p30);
  20.  
  21. Serial pc(USBTX, USBRX);
  22.  
  23. /* ------------------ */
  24.  
  25. const int SPILLER_1 = 0, SPILLER_2 = 1; // Spillere
  26. const int FOROVER = 0, BAKOVER = 1; // Lysretning
  27. const int ANTALL_LYSBLINK = 4; // Lysblink ved tap
  28. const int VENTETID_LYS_TAP = 250; // Varighet av lysblink ved tap
  29.  
  30. const int VANSKELIGHETSGRAD_LETT = 500; //
  31. const int VANSKELIGHETSGRAD_MEDIUM = 250; // Lyshastighet i ms for de forskjellige vanskelighetsgradene.
  32. const int VANSKELIGHETSGRAD_VANSKELIG = 200; //
  33.  
  34. /* ------------------ */
  35.  
  36. int scoreSpiller1 = 0;
  37. int scoreSpiller2 = 0;
  38. int vanskelighetsgrad;
  39. int serveSide = SPILLER_1; // Hvilken side ballen skal serves fra i starten eller etter tapt runde.
  40. float ventetid; // Ventetid i ms, justeres i starten.
  41. bool gyldigSpiller1 = false, gyldigSpiller2 = false; // Brukes til å sjekke om skuddet var gyldig eller ikke.
  42. bool treffSpiller1 = false, treffSpiller2 = false; // Brukes til å sjekke om spilleren traff ballen innenfor tidsrommet.
  43. bool spillTapt = false; // Holder styr på om spillet er tapt eller ikke.
  44.  
  45. /* ------------------ */
  46.  
  47. // Loop for lysdiodene
  48. void loopLys(int retning) {
  49. if(retning == FOROVER) {
  50. for(int a = 0; a < 5; a++) {
  51. if(spillTapt) {
  52. break;
  53. }
  54. bargraph[a] = 1;
  55. wait_ms(ventetid);
  56. bargraph[a] = 0;
  57. }
  58. } else if(retning == BAKOVER) {
  59. for(int a = 4; a >= 0; a--) {
  60. if(spillTapt) {
  61. break;
  62. }
  63. bargraph[a] = 1;
  64. wait_ms(ventetid);
  65. bargraph[a] = 0;
  66. }
  67. } else {
  68. cout << "ERROR: Lysretning ikke valgt." << endl;
  69. exit(1);
  70. }
  71. }
  72.  
  73.  
  74. // Lysblink ved tapt runde.
  75. void TapLys() {
  76. bsone[0] = 0;
  77. bsone[1] = 0;
  78. bsone[2] = 0;
  79. bsone[3] = 0;
  80. for(int i = 0; i < ANTALL_LYSBLINK; i++) {
  81. bargraph[0] = 1;
  82. bargraph[1] = 1;
  83. bargraph[2] = 1;
  84. bargraph[3] = 1;
  85. bargraph[4] = 1;
  86. wait_ms(VENTETID_LYS_TAP);
  87. bargraph[0] = 0;
  88. bargraph[1] = 0;
  89. bargraph[2] = 0;
  90. bargraph[3] = 0;
  91. bargraph[4] = 0;
  92. wait_ms(VENTETID_LYS_TAP);
  93. }
  94. }
  95.  
  96. void ServeSpiller1() {
  97. bsone[0] = 0;
  98. bsone[1] = 1;
  99. bsone[2] = 1;
  100. bsone[3] = 1;
  101. loopLys(BAKOVER);
  102. bsone[0] = 1;
  103. bsone[1] = 0;
  104. loopLys(BAKOVER);
  105. bsone[1] = 1;
  106. bsone[2] = 0;
  107. loopLys(BAKOVER);
  108. bsone[2] = 1;
  109. bsone[3] = 0;
  110. loopLys(BAKOVER);
  111. }
  112.  
  113. void ServeSpiller2() {
  114. bsone[0] = 1;
  115. bsone[1] = 1;
  116. bsone[2] = 1;
  117. bsone[3] = 0;
  118. loopLys(FOROVER);
  119. bsone[2] = 0;
  120. bsone[3] = 1;
  121. loopLys(FOROVER);
  122. bsone[1] = 0;
  123. bsone[2] = 1;
  124. loopLys(FOROVER);
  125. bsone[0] = 0;
  126. bsone[1] = 1;
  127. loopLys(FOROVER);
  128. }
  129.  
  130. // Kjøres når en spiller taper. Poeng til motstanderen og print score i konsollen.
  131. void TaptSpill (int spiller) {
  132. spillTapt = true;
  133. cout << "//" << endl;
  134. cout << "Runde avsluttet. ";
  135. if (spiller == SPILLER_1) {
  136. scoreSpiller2++;
  137. cout << "Spiller 2 scoret." << endl;
  138. } else {
  139. scoreSpiller1++;
  140. cout << "Spiller 1 scoret." << endl;
  141. }
  142.  
  143. cout << "Stilling: SPILLER 1 -- " << scoreSpiller1 << ":" << scoreSpiller2 << " -- SPILLER 2" << endl;
  144. cout << "//" << endl;
  145. TapLys();
  146. }
  147.  
  148. void SkuddSpiller1() {
  149. // Deaktiverer skuddknappene.
  150. knappSpiller1.rise(NULL);
  151. knappSpiller2.rise(NULL);
  152.  
  153. if (gyldigSpiller1) { // Om skuddet er gyldig registereres det...
  154. gyldigSpiller1 = false;
  155. treffSpiller1 = true;
  156. } else {
  157. TaptSpill(SPILLER_1); // ...ellers taper spilleren.
  158. }
  159. }
  160.  
  161. void SkuddSpiller2() {
  162. // Deaktiverer skuddknappene.
  163. knappSpiller1.rise(NULL);
  164. knappSpiller2.rise(NULL);
  165.  
  166. if (gyldigSpiller2) { // Om skuddet er gyldig registereres det...
  167. gyldigSpiller2 = false;
  168. treffSpiller2 = true;
  169. } else {
  170. TaptSpill(SPILLER_2); // ...ellers taper spilleren.
  171. }
  172. }
  173.  
  174. void Avslutt() {
  175. cout << "----" << endl;
  176. cout << "Spill avsluttet." << endl;
  177. cout << "Stilling: SPILLER 1 -- " << scoreSpiller1 << ":" << scoreSpiller2 << " -- SPILLER 2" << endl;
  178. cout << "----" << endl;
  179. exit(0);
  180. }
  181.  
  182. int main() {
  183. // Aktiverer avslutt-knappen.
  184. knappAvslutt.rise(&Avslutt);
  185.  
  186. cout << "1 - Vanskelig: " << VANSKELIGHETSGRAD_VANSKELIG << "ms" << endl; //
  187. cout << "2 - Middels: " << VANSKELIGHETSGRAD_MEDIUM << "ms" << endl; // Printer vanskelighetsgradene
  188. cout << "3 - Lett: " << VANSKELIGHETSGRAD_LETT << "ms" << endl; //
  189. start:
  190. cout << "Tast inn vanskelighetsgrad og tast ENTER: ";
  191. cin >> vanskelighetsgrad; // Henter brukerens valg.
  192. cout << vanskelighetsgrad << endl; // Og printer valget tilbake.
  193.  
  194. // Setter vanskelighetsgraden på spillet.
  195. if(vanskelighetsgrad == 1) {
  196. ventetid = VANSKELIGHETSGRAD_VANSKELIG;
  197. } else if (vanskelighetsgrad == 2) {
  198. ventetid = VANSKELIGHETSGRAD_MEDIUM;
  199. } else if (vanskelighetsgrad == 3) {
  200. ventetid = VANSKELIGHETSGRAD_LETT;
  201. } else {
  202. cout << "Vennligst velg et tall mellom 1-3." << endl; // Om ikke valget er gyldig, sendes
  203. goto start; // spilleren tilbake til starten.
  204. }
  205.  
  206. cout << "----" << endl;
  207. cout << "SPILL START" << endl;
  208. cout << "----" << endl;
  209.  
  210. while(1) {
  211. // Aktiverer skuddknappene.
  212. knappSpiller1.rise(&SkuddSpiller1);
  213. knappSpiller2.rise(&SkuddSpiller2);
  214.  
  215. spillTapt = false; // Resetter variabelen så den kan brukes på nytt.
  216. switch(serveSide) { // Undersøker hvilken side som skal serve.
  217. case SPILLER_1:
  218. ServeSpiller1(); //
  219. gyldigSpiller2 = true; // Når lyset har kommet til motstanderens side
  220. wait_ms(ventetid); // aktiveres tidsrommet som motstanderen kan skyte i.
  221. gyldigSpiller2 = false; //
  222. if(!treffSpiller2) { // Om ikke spilleren treffer ballen, taper spilleren.
  223. TaptSpill(SPILLER_2); //
  224. }
  225. break;
  226. case SPILLER_2:
  227. ServeSpiller2(); //
  228. gyldigSpiller1 = true; //
  229. wait_ms(ventetid); // Samme som over, for motsatt side.
  230. gyldigSpiller1 = false; //
  231. if(!treffSpiller1) { //
  232. TaptSpill(SPILLER_1); //
  233. }
  234. break;
  235. }
  236. if(serveSide == SPILLER_1) { // Etter ballen har blitt skutt én vei,
  237. serveSide = SPILLER_2; // byttes servesiden.
  238. } else {
  239. serveSide = SPILLER_1;
  240. }
  241. }
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement