I have started a project I am calling pong++. It is based on pong but will have lots of different modes.
So far I have this:
Code:
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.
So far I have this:
Code:
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.