multiplayer pong game for LPC 1768
Dependencies: mbed MbedJSONValue mbed-rtos Adafruit_ST7735 Adafruit_GFX EthernetInterface DebouncedInterrupt
Diff: main.cpp
- Revision:
- 29:4708bfb863cb
- Parent:
- 28:a26a43cdaea8
- Child:
- 30:59e9a5409e65
--- a/main.cpp Mon Nov 23 01:26:24 2020 +0000 +++ b/main.cpp Sat Nov 28 01:05:42 2020 +0000 @@ -1,11 +1,9 @@ #include "mbed.h" -#include "EthernetInterface.h" #include "network.h" #include "gamestate.h" #include "graphics.h" #include "DebouncedInterrupt.h" -#include "MbedJSONValue.h" #define DEBOUNCE 25 @@ -17,7 +15,6 @@ UDPSocket sock; Endpoint nist; -volatile int count = 0; volatile int sendFlag = 0; volatile int moveData = 0; volatile int menuPress = 0; @@ -51,7 +48,11 @@ MbedJSONValue serverRequest; char connectionRequest[] = "{\"type\": \"connected\"}"; - char readTo[256]; + char tmp_buffer[256]; + + string serverRequestContent = ""; + int requestLength = 0; + char *serverRequestPayload = NULL; gfx->renderLaunchScreen(); @@ -60,7 +61,7 @@ GameState *gs = new GameState(); // request an open lobby from the server - sock.sendTo(nist, connectionRequest, sizeof(connectionRequest) - 1); + sock.sendTo(nist, connectionRequest, strlen(connectionRequest)); // change ISRs to game controls leftButton.attach(&pressLeftGame, IRQ_RISE, DEBOUNCE); @@ -74,36 +75,37 @@ serverRequest["player"] = gs->getLocalPlayerNum(); serverRequest["delta"] = (int)moveData; - string requestContent = serverRequest.serialize(); - int len = requestContent.size(); - char *toSend = (char *)requestContent.c_str(); + serverRequestContent = serverRequest.serialize(); + requestLength = serverRequestContent.size(); + serverRequestPayload = (char *)serverRequestContent.c_str(); sendFlag = 0; moveData = 0; - sock.sendTo(nist, toSend, len); + sock.sendTo(nist, serverRequestPayload, requestLength); } - int bytesRead = sock.receiveFrom(nist, readTo, sizeof(readTo)); - readTo[bytesRead] = 0; + int bytesRead = sock.receiveFrom(nist, tmp_buffer, sizeof(tmp_buffer)); + tmp_buffer[bytesRead] = 0; if (bytesRead > 0) { - parse(serverResponse, readTo); + parse(serverResponse, tmp_buffer); gs->updateAndRender(&serverResponse, gfx); } wait(.1); } - MbedJSONValue dcReq; - dcReq["hash"] = "jaredyeagersflipflop"; - dcReq["type"] = "disconnect"; + MbedJSONValue disconnectRequest; + disconnectRequest["hash"] = "jaredyeagersflipflop"; + disconnectRequest["type"] = "disconnect"; - string dcReqContent = dcReq.serialize(); - int len = dcReqContent.size(); - char *dcPayload = (char *)dcReqContent.c_str(); + string disconnectRequestContent = disconnectRequest.serialize(); + int len = disconnectRequestContent.size(); + char *disconnectRequestPayload = (char *)disconnectRequestContent.c_str(); - sock.sendTo(nist, dcPayload, len); - gfx->renderGameOver(gs); + sock.sendTo(nist, disconnectRequestPayload, len); + gfx->renderGameOver(gs); + + // reset the game leftButton.attach(&pressButtonMenu, IRQ_RISE, DEBOUNCE); middleButton.attach(&pressButtonMenu, IRQ_RISE, DEBOUNCE); rightButton.attach(&pressButtonMenu, IRQ_RISE, DEBOUNCE); - // reset the game menuPress = 0; delete gs; }