Shoot and Hit Target
Some games involve the need to remove objects blocking a path forward, and what better way to do that than with a laser?
Whether it be a harmless obstacle, or an opponent that needs some laser-ing, keeping track of the score for game points or knowing when an opponent is defeated can be an important to gameplay. This example shows a simple way to shoot a laser beam at a asteroid from a spaceship, and how to keep track of the number of times a laser beam has hit the asteroid.
import thumby # BITMAP: width: 8, height: 8 shipMap = bytearray([195,231,189,219,102,36,60,24]) asteroidMap = bytearray([28,122,126,223,175,223,118,60]) beamMap = bytearray([1,1]) # Make a sprite object shipSpr = thumby.Sprite(8, 8, shipMap, 5, 20) asteroidSpr = thumby.Sprite(8, 8, asteroidMap, 60,20) beamSpr = thumby.Sprite(2, 1, beamMap) beamSpr.x = 11 # place beam so it's hidden at the tip of the ship beamSpr.y = 24 # Set the FPS (without this call, the default fps is 30) thumby.display.setFPS(30) # Game state variables score = 0 shootBeam = False while(True): # Fill canvas to black thumby.display.fill(0) if thumby.buttonA.justPressed(): shootBeam = True if shootBeam == True: thumby.display.fill(0) beamSpr.x += 1 # Check if beam has collided with asteroid if(beamSpr.x >= asteroidSpr.x): beamSpr.x = 11 # Reload beam after hitting asteroid score += 1 # Increase score and change game state shootBeam = False # Draw the score and sprites thumby.display.drawText("Score: ", 15, 3, 1) thumby.display.drawText(str(score), 55, 3, 1) thumby.display.drawSprite(shipSpr) thumby.display.drawSprite(asteroidSpr) thumby.display.drawSprite(beamSpr) thumby.display.update()