So far I have this:
print("starting...") print("defining functions") --function variables local drawRectFill = zmg.drawRectFill local fastCopy = zmg.fastCopy local makeColor = zmg.makeColor local drawPoint = zmg.drawPoint local keyMenuFast = zmg.keyMenuFast local clear = zmg.clear local drawText = zmg.drawText local keyDirectPoll = zmg.keyDirectPoll local keyDirect = zmg.keyDirect local floor = math.floor local random = math.random print("setting vars") --screen vars local LCD_SCREEN_WIDTH = 384 local LCD_SCREEN_HEIGHT = 216 --game variables local key = {F1=79, F2=69, F3=59, F4=49, F5=39, F6=29, Alpha=77, Exit=47, Optn=68, Up=28, Down=37, Left=38, Right=27} local color = {makeColor("limegreen"),makeColor("black")} local ball = {x=20, y=20, width=8, height=8} local dir = {x=1, y=1} local speed = {x=2, y=2} local paddle = {player=40, width=8, height=30, speed=4} local wall = {width=8} print("entering game loop") ----game loop---- while keyMenuFast() ~= key.Exit do ----DRAW---- --draw background drawRectFill(0,0,LCD_SCREEN_WIDTH,LCD_SCREEN_HEIGHT,color[2]) --draw ball drawRectFill(ball.x, ball.y, ball.width, ball.height, color[1]) --draw player paddle drawRectFill(0, paddle.player, paddle.width, paddle.height, color[1]) --draw wall drawRectFill(LCD_SCREEN_WIDTH-wall.width, 0, wall.width, LCD_SCREEN_HEIGHT, color[1]) ----CONTROLS---- --control paddle if keyMenuFast()==key.Up and paddle.player>0 then paddle.player = paddle.player - paddle.speed elseif keyMenuFast()==key.Down and paddle.player<LCD_SCREEN_HEIGHT - paddle.height then paddle.player = paddle.player + paddle.speed end ----COLLISIONS---- --check for collisions if ball.x < 0 + paddle.width and ball.y > paddle.player and ball.y < paddle.player + paddle.height then ball.x = 0 + paddle.width dir.x=1 elseif ball.x < 0 then print("Game Over") break end if ball.x>LCD_SCREEN_WIDTH - ball.width - wall.width then ball.x = LCD_SCREEN_WIDTH - ball.width - wall.width dir.x=-1 end if ball.y<0 then ball.y=0 dir.y=1 elseif ball.y>LCD_SCREEN_HEIGHT - ball.height then ball.y = LCD_SCREEN_HEIGHT - ball.height dir.y=-1 end ----ETC---- --make new vars ball.x = ball.x + (dir.x * speed.x) ball.y = ball.y + (dir.y * speed.y) --refresh screen fastCopy() --[[-- --debug print("ball.y:" .. ball.y) print("ball.x:" .. ball.x) --]]-- end print("exiting.")
As you can see I have a basic pong game set up there. It is totally playable, just paste it into notepad or whatever, save it, and send it to your calc. If you get errors, please post them.
The main reason I am posting this is because I have not come up with many ideas for different modes. The ideas I have come up with are:
* Slug: Make the paddle move very slowly. I will probably make this something that happens in-game as a penalty or whatever, not as an actual game mode.
* Spread: have two player paddles that move away from each other symmetrically from the center.
* Obstacles: Have obstacles in the middle of the screen.
* Multiple balls: self-explanatory, I think. Have more than one ball to keep track of.
Please post your ideas!
EDIT:
If you can give me tips on optimization, by all means do! I think that there may be a faster way of clearing the screen than drawing the background every frame, but I am too lazy right now to figure that out. |