Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import random
- from os import path
- from sqlite3 import *
- from tkinter import *
- from questions import *
- import tkinter.messagebox as tm
- pygame.init()
- WIDTH = 600
- HEIGHT = 600
- FPS = 60
- WHITE = (255,255,255)
- BLACK = (0,0,0)
- RED = (255,0,0)
- GREEN = (0,255,0)
- BLUE = (0,0,255)
- YELLOW =(255, 255, 0)
- background_image = pygame.image.load("background.jpg")
- global names
- names = "abc"
- screen = pygame.display.set_mode((WIDTH, HEIGHT))
- pygame.display.set_caption("Business Space Invaders")
- clock = pygame.time.Clock()
- font_name = pygame.font.match_font("arial")
- timerRunning = False
- fifteen = pygame.USEREVENT+1
- pygame.time.set_timer(fifteen,1000)
- timer = 0
- #login
- class SaveFrame(Frame):
- def __init__(self, master):
- super().__init__(master)
- self.label_message = Label(self, text="game over, better luck next time!")
- self.label_username = Label(self, text="Enter Your Name")
- self.entry_username = Entry(self)
- self.label_message.grid(row=0, sticky=E)
- self.label_username.grid(row=1, sticky=E)
- self.entry_username.grid(row=1, column=1)
- self.savebtn = Button(self, text="Save", command=self._save_btn_clicked)
- self.savebtn.grid(columnspan=2)
- self.pack()
- def _save_btn_clicked(self):
- names = self.entry_username.get()
- save_scores(names)
- quit()
- def save_scores(names):
- conn,cur =dbconnection()
- cur.execute("insert into Scoreboard values(null, '{0}','{1}')".format(names,score))
- conn.commit()
- conn.close()
- #database
- def dbconnection():
- conn= connect("scores.db")
- cur = conn.cursor()
- return conn, cur
- #score
- def draw_text(surf, text, size, x, y):
- font = pygame.font.Font(font_name,size)
- text_surface = font.render(text,True,WHITE)
- text_rect = text_surface.get_rect()
- text_rect.midtop = (x,y)
- surf.blit(text_surface, text_rect)
- def new_mob():
- m = Mob()
- all_sprites.add(m)
- mobs.add(m)
- #players sprite
- class Player(pygame.sprite.Sprite):
- def __init__(self):
- pygame.sprite.Sprite.__init__(self) #inheritanince
- #self.shooting = pygame.mixer.Sound("shoot.mp3")
- self.image = pygame.image.load("player2.png")
- self.image = pygame.transform.scale(self.image, (100,120)) #surface to draw
- self.rect = self.image.get_rect()
- self.rect.centerx = WIDTH/2 #places image in centre
- self.rect.bottom = HEIGHT-10 #puts it 10px from bottom
- self.speedx = 0
- def update(self):
- #move the sprite
- self.speedx = 0
- keystate = pygame.key.get_pressed()
- if keystate[pygame.K_LEFT]:
- self.speedx = -5
- if keystate[pygame.K_RIGHT]:
- self.speedx=5
- self.rect.x += self.speedx
- #to ensure it does not run off screen
- if self.rect.right >WIDTH:
- self.rect.right = WIDTH
- if self.rect.left < 0:
- self.rect.left = 0
- def shoot(self):
- bullet = Bullet(self.rect.centerx,self.rect.top)
- all_sprites.add(bullet)
- bullets.add(bullet)
- class Mob(pygame.sprite.Sprite):
- #enemy inherits from sprite
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load("topic1.png")
- self.image = pygame.transform.scale(self.image, (70,60))
- self.rect = self.image.get_rect()
- self.rect.x = random.randrange(0, WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100,-40)
- self.speedy = 1
- self.mob = "mob"
- def update(self):
- self.rect.y += self.speedy
- if self.rect.top > HEIGHT +10:
- self.rect.x = random.randrange(0, WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100,-40)
- self.speedy = 1
- class Mob2(pygame.sprite.Sprite):
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load("topic2.png")
- self.image = pygame.transform.scale(self.image, (70,60))
- self.rect = self.image.get_rect()
- self.mob = "mob2"
- self.rect.x = random.randrange(0, WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100,-40)
- self.speedy = 1
- def update(self):
- self.rect.y += self.speedy
- if self.rect.top > HEIGHT +10:
- self.rect.x = random.randrange(0, WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100,-40)
- self.speedy = 1
- class Mob3(pygame.sprite.Sprite):
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load("topic3.png")
- self.image = pygame.transform.scale(self.image, (70,60))
- self.rect = self.image.get_rect()
- self.mob = "mob3"
- self.rect.x = random.randrange(0, WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100,-40)
- self.speedy = 1
- def update(self):
- self.rect.y += self.speedy
- if self.rect.top > HEIGHT +10:
- self.rect.x = random.randrange(0, WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100,-40)
- self.speedy = 1
- class Buttons(pygame.sprite.Sprite):
- def __init__(self,x,y,colour_text,text,text_size,width,height,action_take):
- pygame.sprite.Sprite.__init__(self) #inheritance
- self.image = pygame.Surface((width,height))
- self.image.fill(255,0,0)
- self.rect = self.image.get_rect()
- self.rect.center = (x,y)
- self.font = pygame.font.SysFont("Marlet",text_size)
- self.surf = self.font.render(text,1, colour_text)
- self.text_rect = self.surf.get_rect()
- self.text_rect.center = (x,y)
- self.type = "button"
- self.action_take = action_take
- def update(self):
- screen.blit(self.image,self.rect)
- screen.blit(self.surf,self.text_rect)
- class Bullet(pygame.sprite.Sprite):
- def __init__(self,x,y):
- pygame.sprite.Sprite.__init__(self) #inheritance
- self.image = pygame.image.load("money.png")
- self.image = pygame.transform.scale(self.image, (30,40))
- self.rect = self.image.get_rect()
- self.rect.centerx = x
- self.rect.bottom = y
- self.speedx = -10
- def update(self):
- self.rect.y += self.speedx
- if self.rect.bottom <0:
- self.kill()
- class Questions(Frame):
- def __init__(self, master):
- self.master = master
- super().__init__(master)
- self.label_message = Label(self, text="{}".format(ques))
- self.label_message.grid(row=0, sticky=E)
- self.quesbtn1 = Button(self, text="{}".format(ans1), command=self._ques_btn_1)
- self.quesbtn1.grid(columnspan=2)
- self.quesbtn2 = Button(self, text="{}".format(ans2), command=self._ques_btn_2)
- self.quesbtn2.grid(columnspan=2)
- self.quesbtn3 = Button(self, text="{}".format(ans3), command=self._ques_btn_3)
- self.quesbtn3.grid(columnspan=2)
- self.quesbtn4 = Button(self, text="{}".format(ans4), command=self._ques_btn_4)
- self.quesbtn4.grid(columnspan=2)
- self.pack()
- self.label_message.config(font=("Arial", 30))
- self.quesbtn1.config(font=("Arial",20))
- self.quesbtn2.config(font=("Arial",20))
- self.quesbtn3.config(font=("Arial",20))
- self.quesbtn4.config(font=("Arial",20))
- def _ques_btn_1(self):
- quit()
- def _ques_btn_2(self):
- quit()
- def _ques_btn_3(self):
- quit()
- def _ques_btn_4(self):
- score =+ 1
- print (score)
- self.master.destroy()
- def dbconnection():
- conn= connect("scores.db")
- cur = conn.cursor()
- return conn, cur
- conn, cur = dbconnection()
- ques = cur.execute("SELECT question FROM Questions where topic = 1").fetchall()[0][0]
- ans1 = cur.execute("SELECT answer1 FROM Questions where topic = 1").fetchall()[0][0]
- ans2 = cur.execute("SELECT answer2 FROM Questions where topic = 1").fetchall()[0][0]
- ans3 = cur.execute("SELECT answer3 FROM Questions where topic = 1").fetchall()[0][0]
- ans4 = cur.execute("SELECT answer4 FROM Questions where topic = 1").fetchall()[0][0]
- #create sprite group
- all_sprites = pygame.sprite.Group()
- player = Player()
- mobs = pygame.sprite.Group()
- bullets = pygame.sprite.Group()
- for i in range(1):
- m = Mob()
- all_sprites.add(m)
- mobs.add(m)
- for i in range(1):
- m = Mob2()
- all_sprites.add(m)
- mobs.add(m)
- for i in range(1):
- m = Mob3()
- all_sprites.add(m)
- mobs.add(m)
- all_sprites.add(player)
- score = 0
- runQ = False
- #Game loop
- running = True
- while running:
- clock.tick(FPS)
- #process input (events)
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running= False
- elif event.type == pygame.KEYDOWN:
- if event.key == pygame.K_SPACE:
- player.shoot()
- elif event.type == fifteen:
- if timerRunning:
- timer += 1
- if timer > 15:
- timer = 0
- screen.blit(background_image, [0,0])
- all_sprites.draw(screen)
- pygame.display.flip()
- #update
- all_sprites.update()
- hits = pygame.sprite.groupcollide(mobs,bullets,True,True)
- if timer == 5:
- root = Tk()
- lf = Questions(root)
- root.mainloop()
- timerRunning = False
- #respawn mobs
- for hits in hits:
- if hits.mob == "mob":
- if timerRunning == False:
- timer = 0
- timerRunning = True
- m = Mob()
- all_sprites.add(m)
- mobs.add(m)
- elif hits.mob == "mob2":
- m = Mob2()
- all_sprites.add(m)
- mobs.add(m)
- elif hits.mob == "mob3":
- m = Mob3()
- all_sprites.add(m)
- mobs.add(m)
- hits = pygame.sprite.spritecollide(player,mobs,True)
- if hits:
- new_mob()
- all_sprites.add(player)
- background_image = pygame.image.load("background.jpg")
- print (score)
- pygame.quit()
- root = Tk()
- lf = SaveFrame(root)
- root.mainloop()
Add Comment
Please, Sign In to add comment