Mar-30-2020, 11:54 AM
I am aiming to create a basic maths game, and I am creating a scoring system, after every question right the score should increment, it does so for a second before turning back to 0, thanks for any help. P.S. the code below uses the pygame module.
#relevent moduals are being imported into the python IDLE
import pygame
import system as sys
import math
import time
import random
from random import randrange
#pygame initialisation
pygame.init()
# colours being defined for future use
GREEN = (0, 255, 0)
DARK_GREEN = (0, 100, 0)
RED = (255, 0, 0)
GOLD = (255, 215, 0)
PINK = (255, 20, 147)
PURPLE = (128, 0, 128)
LIME = (0, 255, 0)
LIGHT_BLUE = (135, 206, 250)
YELLOW = (255, 255, 0)
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
BLUE = (0, 0, 168)
ORANGE = (255, 165, 0)
# A Array of global variables to be incremented through to create a optical effect
rainbow =[RED, DARK_GREEN, GOLD, PINK, PURPLE, LIME, LIGHT_BLUE, YELLOW, WHITE, BLUE, ORANGE]
standard_font = pygame.font.SysFont('arial', 70)
A = standard_font.render("A", 1, BLACK)
B = standard_font.render("B", 1, BLACK)
C = standard_font.render("C", 1, BLACK)
To_Win = 5
unit = 80
Box_width = (2*unit)
pygame_window_width = ((6*unit)+Box_width)
pygame_window_height = (7*unit)
pygame_window_size = (pygame_window_width, pygame_window_height)
pygame_screen = pygame.display.set_mode(pygame_window_size)
Easy_Bank = ['Q1','Q2','Q3','Q4','Q5']
Medium_Bank = ['Q6()','Q7()','Q8()','Q9()','Q10()']
Hard_Bank = ['Q11()','Q12()','Q13()','Q14()','Q15()']
def Q_display(Q_label, score, Answer, A1, A2, A3, X, E, D):
cover(score)
Question_label = standard_font.render(Q_label, 1, BLACK)
Correct_label = standard_font.render("Correct", 1, DARK_GREEN)
Incorrect_label = standard_font.render("Incorrect", 1, RED)
A_label_1 = standard_font.render(str(A1), 1, BLACK)
A_label_2 = standard_font.render(str(A2), 1, BLACK)
A_label_3 = standard_font.render(str(A3), 1, BLACK)
pygame_screen.blit(Question_label, (E,D))
pygame_screen.blit(A, (X,250))
pygame_screen.blit(B, ((X+140),250))
pygame_screen.blit(C, ((X+265),250))
pygame_screen.blit(A_label_1, (X, 320))
pygame_screen.blit(A_label_2, (X+140, 320))
pygame_screen.blit(A_label_3, (X+265, 320))
update()
select = False
while select == False:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
Response = A1
select = True
if event.key == pygame.K_b:
Response = A2
select = True
if event.key == pygame.K_c:
Response = A3
select = True
if Response == Answer:
cover(score)
pygame_screen.blit(Correct_label, (100, 200))
score = score + 1
score_track(score)
else:
score = 0
cover(score)
pygame_screen.blit(Incorrect_label, (80,200))
if score == To_Win:
pass
update()
pygame.time.wait(1000)
return score
return score
def Q1(score):
cover(score)
Q_Label = ("6 + 8 =")
Answer = 14
A1 = 15
A2 = Answer
A3 = 13
X = 70
E = 150
D = 100
Q_display(Q_Label, score, Answer, A1, A2, A3, X, E, D)
return score
def Q2(score):
cover(score)
Q_Label = ("4 x 7 =")
Answer = 28
A1 = 32
A2 = 25
A3 = Answer
X = 70
E = 150
D = 100
Q_display(Q_Label, score, Answer, A1, A2, A3, X, E, D)
return score
def Q3(score):
cover(score)
Q_Label = ("100 ÷ 25 =")
Answer = 4
A1 = 5
A2 = Answer
A3 = 2.5
X = 80
E = 80
D = 100
Q_display(Q_Label, score, Answer, A1, A2, A3, X, E, D)
return score
def Q4(score):
cover(score)
Q_Label = ("(10x33) - 60 =")
Answer = 270
A1 = Answer
A2 = 250
A3 = 280
X = 70
E = 35
D = 100
Q_display(Q_Label, score, Answer, A1, A2, A3, X, E, D)
return score
def Q5(score):
cover(score)
Q_Label = ("39 ÷ 3 =")
Answer = 13
A1 = Answer
A2 = 11
A3 = 16
X = 70
E = 150
D = 100
Q_display(Q_Label, score, Answer, A1, A2, A3, X, E, D)
return score
def Box_Draw(score):
pygame.draw.rect(pygame_screen, PURPLE, [490, 0, 150, pygame_window_height])
update()
return score
def score_track(score):
score_font = pygame.font.SysFont('arial', 30)
score_label = score_font.render(("Score: "+str(score)), 1, LIGHT_BLUE)
pygame.draw.rect(pygame_screen, PURPLE, [510, 163, 120, 30])
pygame_screen.blit(score_label, ((510),160))
update()
return score
def cover(score):
pygame.draw.rect(pygame_screen, LIGHT_BLUE, (0, 0, pygame_window_width, pygame_window_height))
Box_Draw(score)
score_track(score)
return score
def update():
# Updates screen
pygame.display.update()
def start():
score = 0
game_over = False
main_code(score, game_over)
def Questions(level, score):
if level == 'Easy':
Questions = Easy_Bank
elif level == 'Medium':
Questions = Medium_Bank
elif level == 'Hard':
Questions = Hard_Bank
for i in range (1,5):
Q = random.choice(Questions)
Question_Load(Q, score)
Questions.remove(Q)
return True
def Question_Load(Q, score):
if Q == 'Q1':
Q1(score)
if Q == 'Q2':
Q2(score)
if Q == 'Q3':
Q3(score)
if Q == 'Q4':
Q4(score)
if Q == 'Q5':
Q5(score)
return score
def main_code(score, game_over):
level = 'Easy'
while game_over == False:
game_over = Questions(level, score)
# Calls the function which start the program
start()
