I have a lot of code for this game I am making. So I guess this is a two part question. First of all how do I link lots of code to a forum (Here I worked around the issue by making a google doc with the code . . . link below)? Secondly I would love some simple feedback about this program. I’m afraid it is very repetitive. There is also a problem with the scoring which I cannot figure out. Thanks a lot!
The game is a first person shooter (2d of course) with dots as the enemy. You have thirty seconds to eliminate as many as you can. As soon as you kill all 5 and new 5 pop up moving faster. You control your “gun” using the accelerometer.
Interesting game. I replaced the sprite I don’t have with a small circle. One problem, if you tilt the iPad too far, the screen rotates. You need to lock the screen.
@AIDENCODER123 Before worrying about why the scoring isn’t working properly, I would spend the time learning about tables. You have so much repetitive code and tables could eliminate a lot of it. Once you reduce the code, it would be so much easier to fix the scoring. You have a very interesting game and you should continue to learn more coding. You could then make the code easier to update or fix errors. After learning tables, you should then look into classes. Classes can also eliminate a lot of repetitive coding.
@AIDENCODER123 Here’s an example of what tables can do. I took your example and wrote something similar. I think you should look at this example and learn what you can from it and then try to modify your code. Your code is a great start and I think you can learn a lot by trying to condense it. That’s the quickest way to learn.
displayMode(FULLSCREEN)
supportedOrientations(PORTRAIT)
function setup()
bullets=15
fontSize(40)
score=0
rectMode(CENTER)
ellipseMode(CENTER)
createTargets()
cx=WIDTH/2
cy=HEIGHT/2
dx,dy=0,0
gameOver=false
end
function createTargets()
bullets=bullets+5
targets={}
for z=1,5 do
table.insert(targets,{x=math.random(WIDTH),
y=math.random(HEIGHT),spX=math.random(-1,1),spY=math.random(-1,1)})
end
end
function draw()
background(0, 255, 187, 255)
fill(255,0,0)
text("SCORE "..score,WIDTH/2,HEIGHT-50)
text("BULLETS "..bullets,WIDTH/2,HEIGHT-100)
fill(255)
if gameOver then
background(0)
text(" GAME OVER\
triple tap to restart",WIDTH/2,HEIGHT/2)
return
end
for a,b in pairs(targets) do
rect(b.x,b.y,10,10)
b.x=b.x+b.spX
b.y=b.y+b.spY
if b.x>WIDTH or b.x<0 then
b.spX=-b.spX
end
if b.y>HEIGHT or b.y<0 then
b.spY=-b.spY
end
end
cx=cx+Gravity.x*20
cy=cy+Gravity.y*20
if cx<0 then
cx=0
end
if cx>WIDTH then
cx=WIDTH
end
if cy<0 then
cy=0
end
if cy>HEIGHT then
cy=HEIGHT
end
noFill()
stroke(255)
strokeWidth(2)
ellipse(cx,cy,30)
end
function touched(t)
if t.state==BEGAN then
if gameOver then
if t.tapCount==3 then
gameOver=false
createTargets()
bullets=20
end
return
end
bullets=bullets-1
if bullets==0 then
gameOver=true
return
end
for a,b in pairs(targets) do
v1=vec2(cx+dx,cy+dy)
if v1:dist(vec2(b.x,b.y))<10 then
table.remove(targets,a)
score=score+1
end
end
if #targets==0 then
createTargets()
end
end
end