0
votes

Importing

import time
import math
import random


import pygame
from pygame import K_UP, mixer
pygame.init()

Initialization and Screen display settings

# initialize the program

screen = pygame.display.set_mode((800, 600))
# create a screen
pygame.display.set_caption(("Sabin's first game"))
# Title
icon = pygame.image.load('is.png')
# image
pygame.display.set_icon(icon)
# backgroundimg
background = pygame.image.load('spaceBackground.png')
# backgroundSound
mixer.music.load('background.wav')
mixer.music.play(-1)

Tryin to add counter with Clock



# counter
clock=pygame.time.Clock()

start_time=None
FONT = pygame.font.SysFont("Sans", 20)
TEXT_COLOR = (255, 255, 255)

    

Player mode

# player

playerImg = pygame.image.load('space.png')
playerX = 350
playerY = 480
playerX_change = 0


def player(x, y):
    screen.blit(playerImg, (x, y))

Enemy mode # enemy enemyImg = [] enemyX = [] enemyY = [] enemyX_change = [] enemyy_change = [] num_of_enemies = 10 for i in range(num_of_enemies): enemyImg.append((pygame.image.load('enemy.png'))) enemyX.append(random.randint(0, 735)) enemyY.append(random.randint(50, 150)) # random value for x and y in between the given numbers

    enemyX_change.append(0.3)
    enemyy_change.append(10)


def enemy(x, y, i):
    screen.blit(enemyImg[i], (x, y))


# bullet
bulletImg = pygame.image.load('bullet.png')
bulletX = 0
bulletY = 480
# random value for x and y in between the given numbers

bulletX_change = 0
bulletY_change = 0.5
bullet_state = "ready"



# Score

score_value = 0
font = pygame.font.Font('freesansbold.ttf', 32)
textX = 10
textY = 10


def show_score(x, y):
    score = font.render("Score ="+str(score_value), True, (255, 255, 255))
    screen.blit(score, (x, y))


over_font = pygame.font.Font('freesansbold.ttf', 80)


def game_over_text():
    over_text = font.render("GAME OVER", True, (255, 255, 255))
    screen.blit(over_text, (300, 200))
    shift_text = font.render(
        "Press Schift then enter to play again", True, (255, 255, 255))
    screen.blit(shift_text, (100, 300))


def fire_bullet(x, y):
    global bullet_state
    bullet_state = "fire"
    screen.blit(bulletImg, (x+28, y))
# blit and draw are same


def isColliding(enemyX, enemyY, bulletX, bulletY):
    distance = math.sqrt(math.pow(enemyX-bulletX, 2) +
                         (math.pow(enemyY-bulletY, 2)))
    if distance < 27:
        return True
    else:
        return False


# playagain

font = pygame.font.Font('freesansbold.ttf', 32)


def show_screen():
    First_sentence = font.render("NEW GAME", True, (255, 255, 255))
    screen.blit(First_sentence, (300, 200))
    Second_sentence = font.render(
        "Arrow keys move, space to fire", True, (255, 255, 255))
    screen.blit(Second_sentence, (200, 300))
    First_sentence = font.render("Press anykey to play", True, (255, 255, 255))
    screen.blit(First_sentence, (250, 400))

    


# create a screen
pygame.display.set_caption(("Sabin's first game"))
# Title
icon = pygame.image.load('is.png')
# image
pygame.display.set_icon(icon)
# backgroundimg
background = pygame.image.load('spaceBackground.png')
# backgroundSound
mixer.music.load('background.wav')
mixer.music.play(-1)


running = True

while running:
    screen.fill((0, 0, 0))
    # it does not work without the methode update
    screen.blit(background, (0, 0))

    for event in pygame.event.get():
        

        if event.type == pygame.QUIT:
            running = False
            # to close the game
    #  if keystroke  is pressed check whether it is left or right    #
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                start_time = pygame.time.get_ticks()

            if event.key == pygame.K_LEFT:

                playerX_change = -0.5
            if event.key == pygame.K_RIGHT:

                playerX_change = 0.5
            if event.key == pygame.K_SPACE:
                bullet_Sound = mixer.Sound('laser.wav')
                bullet_Sound.play()
                if bullet_state is ("ready"):

                    bulletX = playerX
                    fire_bullet(bulletX, bulletY)

        if event.type == pygame.KEYUP:

            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:

                playerX_change = 0

    playerX += playerX_change
    # not getting out from borders
    if playerX <= 0:
        playerX = 0
    elif playerX >= 700:
        playerX = 700

    for i in range(num_of_enemies):
        if enemyY[i] > 200:
            for j in range(num_of_enemies):
                enemyY[j] = 2000

The Counter does not work after trying many times

                time_since_enter = pygame.time.get_ticks() - start_time
                message = 'Milliseconds since enter: ' + str(time_since_enter)
                screen.blit(FONT.render(message, True, TEXT_COLOR), (20, 20))
                clock.tick(60)
                pygame.display.flip()
             
            break

        enemyX[i] += enemyX_change[i]
    # not getting out from borders
        if enemyX[i] <= 0:
            enemyX_change[i] = 0.5
            enemyY[i] += enemyy_change[i]
        elif enemyX[i] >= 700:
            enemyX_change[i] = -0.5
            enemyY[i] += enemyy_change[i]
    # Collision
        colision = isColliding(enemyX[i], enemyY[i], bulletX, bulletY)
        if colision:
                    explosion_Sound = mixer.Sound('explosion.wav')
                    explosion_Sound.play()
                    bulletY = 480
                    bullet_state = "ready"
                    score_value += 1
                    print(score_value)
                    enemyX[i] = random.randint(0, 735)
                    enemyY[i] = random.randint(50, 150)

        enemy(enemyX[i], enemyY[i], i)


# Bulletmovement
    if bulletY == 0:
        bulletY = 480
        bullet_state = "ready"
    if bullet_state is ("fire"):
        fire_bullet(bulletX, bulletY)
        bulletY -= bulletY_change


        

    show_score(textX, textY)

    
    player(playerX, playerY)
    pygame.display.update()
1
Please trim your code to make it easier to find your problem. Follow these guidelines to create a minimal reproducible example.Community
Can we please have a script which we can run our machines? It is hard to find your issue as we have to reconstruct your code from the pieces you gave us.SimplyDev
stackoverflow.com/questions/19870407/… there might be the answer hereeisa.exe

1 Answers

0
votes

When the enemy reaches 200 at y axis i need it to counter from 10s to end the game if enemyY[i] > 200: for j in range(num_of_enemies): enemyY[j] = 2000 The Counter does not work after trying many times

            time_since_enter = pygame.time.get_ticks() - start_time
            message = 'Milliseconds since enter: ' + str(time_since_enter)
            screen.blit(FONT.render(message, True, TEXT_COLOR), (20, 20))
            clock.tick(60)
            pygame.display.flip()