also w a s d for to go to top,left,bottom,right and f for shoot
import pygame,random,time
from sys import exit
pygame.init()
width=480
height=240
fps=60
screen=pygame.display.set_mode((width,height))
pygame.display.set_caption("meowonID's rectangle game (Inactive)")
plr=pygame.Surface((15,15))
plr.fill((50,50,135))
bullet=pygame.Surface((20,5))
bullet.fill((165,165,55))
enemy=pygame.Surface((15,15))
enemy.fill((165,10,10))
border=pygame.Surface((15,240))
border.fill((255,255,255))
borderrect= border.get_rect(center=(15, height//2))
enemylist=[]
bulletlist=[]
plrrect=plr.get_rect(center=(width//2,height//2))
plrspeed=2.5
maxammo=15
ammo=15
score=0
isreloading=False
isshooting=False
reloadtime=1000
shootdebounce=250
lastshoottime=0
middletime=2500
enemyevent=pygame.USEREVENT+1
pygame.time.set_timer(enemyevent,1000)
active="False"
dev=False
def enemytouchedborderUI():
screen.fill((35,5,5))
etbfont=pygame.font.SysFont("Arial",25,bold=True,italic=False)
etbtext=etbfont.render("game over! enemy touched the white border",True,pygame.Color(135,10,10))
etbrect=etbtext.get_rect(center=(width//2,height//2))
screen.blit(etbtext,etbrect)
pygame.display.update()
pygame.time.delay(2000)
pygame.quit()
exit()
def enemytouchedplayerUI():
screen.fill((35,5,5))
etpfont=pygame.font.SysFont("Arial",25,bold=True,italic=False)
etptext=etpfont.render("game over! enemy touched the player :C",True,pygame.Color(135,10,10))
etprect=etptext.get_rect(center=(width//2,height//2))
screen.blit(etptext,etprect)
pygame.display.update()
pygame.time.delay(2000)
pygame.quit()
exit()
def movementhandler():
#move enemy
for enemyrect in enemylist[:]:
enemyrect.x-=3
enemyrect.y+=random.randint(-2,2)
if enemyrect.y<=0:
enemyrect.y+=20
if enemyrect.y>=height:
enemyrect.y-=20
#move stuff
for bulletrect in bulletlist[:]:
bulletrect.x+=5
for bulletrect in bulletlist:
screen.blit(bullet,bulletrect)
key=pygame.key.get_pressed()
bordercollideplr=pygame.Rect.colliderect(plrrect,borderrect)
if key[pygame.K_a] and not bordercollideplr:
plrrect.x-=plrspeed+0.5
if key[pygame.K_d] and plrrect.right<width:
plrrect.x+=plrspeed
if key[pygame.K_w] and plrrect.top>height-height:
plrrect.y-=plrspeed+0.5
if key[pygame.K_s] and plrrect.bottom<height:
plrrect.y+=plrspeed
def shootingreloadinghandler():
global isreloading,isshooting,ammo,maxammo
if isreloading==True:
current_time_reload=pygame.time.get_ticks()
reloadingfont = pygame.font.SysFont("Arial", 65, bold=True)
reloadtext = reloadingfont.render("Reloading...", True, pygame.Color(255, 255, 255))
reloadrect = reloadtext.get_rect(center=(width//2,height//2))
screen.blit(reloadtext, reloadrect)
if current_time_reload-reloadstarttime>=reloadtime:
# as current time reload gets larger reload start times effect on minusing gets smaller
# and thus can be above reloadtime
ammo=maxammo
isreloading=False
if isshooting==True:
current_time_shooting=pygame.time.get_ticks()
if current_time_shooting-lastshoottime >= shootdebounce:
isshooting=False
def collisionhandler():
global score
for enemyrect in enemylist:
screen.blit(enemy,enemyrect)
collide=pygame.Rect.colliderect(plrrect,enemyrect)
collide2=pygame.Rect.colliderect(borderrect,enemyrect)
if collide and dev==False:
enemytouchedplayerUI()
if collide2 and dev==False:
enemytouchedborderUI()
for bulletrect in bulletlist:
collide3=pygame.Rect.colliderect(enemyrect,bulletrect)
if collide3:
bulletlist.remove(bulletrect)
enemylist.remove(enemyrect)
score+=1
def wincondition():
if score==45:
pygame.display.set_caption("OMG U WON !@(#@$! thanks for playing - meowonID")
screen.fill((30,125,30))
wintxt=pygame.font.SysFont("Arial",25,bold=True).render("you won :O!!!#!# (u dont get anything.)",True,pygame.Color(25,76,25))
wintxtrect=wintxt.get_rect(center=(width//2,height//2))
screen.blit(wintxt,wintxtrect)
pygame.display.flip()
pygame.time.delay(3500)
exit()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT or event.type==pygame.KEYDOWN and event.key==pygame.K_ESCAPE:
pygame.quit()
exit()
if event.type==pygame.KEYDOWN and event.key==pygame.K_j and active=="False":
active="Middle"
middle_start_time=pygame.time.get_ticks()
if event.type==enemyevent and active=="True":
newenemy=enemy.get_rect(center=(500,random.randint(15,height-15)))
enemylist.append(newenemy)
if event.type==pygame.KEYDOWN and event.key==pygame.K_f and active=="True":
if ammo>0 and not isshooting:
newbullet=bullet.get_rect(midleft=(plrrect.x+15,plrrect.y+6.5))
bulletlist.append(newbullet)
ammo-=1
isshooting=True
lastshoottime=pygame.time.get_ticks()
if ammo==0 and not isreloading:
isreloading=True
reloadstarttime=pygame.time.get_ticks()
if active=="False":
#starting screen
screen.fill((35,35,35))
startfont=pygame.font.SysFont('Arial',55,bold=True,italic=True)
starttxt=startfont.render("J to start the game :D",True,pygame.Color(255,255,255))
starttxtrect=starttxt.get_rect(center=(width//2,height//2))
screen.blit(starttxt,starttxtrect)
if active=="Middle":
pygame.display.set_caption("meowonID's rectangle game (Middle)")
screen.fill((35,35,35))
current_middle_time=pygame.time.get_ticks()
middletext=pygame.font.SysFont('Arial',17,bold=True).render("Mission: kill red rectangles and dont let them collide with the border",True,pygame.Color(255,255,255))
middletext2=pygame.font.SysFont('Arial',25,bold=True).render("And main goal: get 45 score to win!!",True,pygame.Color(100,200,100))
middletext3=pygame.font.SysFont('Arial',25,bold=True).render("(And stats are in the title bar of the window)",True,pygame.Color(255,255,255))
middletextrect=middletext.get_rect(center=(width/2,height/2))
middletext2rect=middletext2.get_rect(center=(width/2,height/2+17))
middletext3rect=middletext3.get_rect(center=(width/2,height/2+17+25))
screen.blit(middletext,middletextrect)
screen.blit(middletext2,middletext2rect)
screen.blit(middletext3,middletext3rect)
pygame.display.update()
if current_middle_time - middle_start_time >=middletime:
active="True"
if active=="True":
pygame.display.set_caption("Ingame | Ammo: " + str(ammo) + " | Score: " + str(score))
screen.fill((15,15,15))
#collision detection
# for enemyrect in enemylist:
# screen.blit(enemy,enemyrect)
# collide=pygame.Rect.colliderect(plrrect,enemyrect)
# collide2=pygame.Rect.colliderect(borderrect,enemyrect)
# if collide and dev==False:
# enemytouchedplayer()
# if collide2 and dev==False:
# enemytouchedborder()
# for bulletrect in bulletlist:
# collide3=pygame.Rect.colliderect(enemyrect,bulletrect)
# if collide3 and dev==True:
# bulletlist.remove(bulletrect)
# enemylist.remove(enemyrect)
collisionhandler()
movementhandler()
shootingreloadinghandler()
wincondition()
#blit
screen.blit(plr,plrrect)
screen.blit(border,borderrect)
pygame.display.update()
pygame.time.Clock().tick(fps)
← Return to game
Comments
Log in with itch.io to leave a comment.
code for the app:
also w a s d for to go to top,left,bottom,right and f for shoot
import pygame,random,time from sys import exit pygame.init() width=480 height=240 fps=60 screen=pygame.display.set_mode((width,height)) pygame.display.set_caption("meowonID's rectangle game (Inactive)") plr=pygame.Surface((15,15)) plr.fill((50,50,135)) bullet=pygame.Surface((20,5)) bullet.fill((165,165,55)) enemy=pygame.Surface((15,15)) enemy.fill((165,10,10)) border=pygame.Surface((15,240)) border.fill((255,255,255)) borderrect= border.get_rect(center=(15, height//2)) enemylist=[] bulletlist=[] plrrect=plr.get_rect(center=(width//2,height//2)) plrspeed=2.5 maxammo=15 ammo=15 score=0 isreloading=False isshooting=False reloadtime=1000 shootdebounce=250 lastshoottime=0 middletime=2500 enemyevent=pygame.USEREVENT+1 pygame.time.set_timer(enemyevent,1000) active="False" dev=False def enemytouchedborderUI(): screen.fill((35,5,5)) etbfont=pygame.font.SysFont("Arial",25,bold=True,italic=False) etbtext=etbfont.render("game over! enemy touched the white border",True,pygame.Color(135,10,10)) etbrect=etbtext.get_rect(center=(width//2,height//2)) screen.blit(etbtext,etbrect) pygame.display.update() pygame.time.delay(2000) pygame.quit() exit() def enemytouchedplayerUI(): screen.fill((35,5,5)) etpfont=pygame.font.SysFont("Arial",25,bold=True,italic=False) etptext=etpfont.render("game over! enemy touched the player :C",True,pygame.Color(135,10,10)) etprect=etptext.get_rect(center=(width//2,height//2)) screen.blit(etptext,etprect) pygame.display.update() pygame.time.delay(2000) pygame.quit() exit() def movementhandler(): #move enemy for enemyrect in enemylist[:]: enemyrect.x-=3 enemyrect.y+=random.randint(-2,2) if enemyrect.y<=0: enemyrect.y+=20 if enemyrect.y>=height: enemyrect.y-=20 #move stuff for bulletrect in bulletlist[:]: bulletrect.x+=5 for bulletrect in bulletlist: screen.blit(bullet,bulletrect) key=pygame.key.get_pressed() bordercollideplr=pygame.Rect.colliderect(plrrect,borderrect) if key[pygame.K_a] and not bordercollideplr: plrrect.x-=plrspeed+0.5 if key[pygame.K_d] and plrrect.right<width: plrrect.x+=plrspeed if key[pygame.K_w] and plrrect.top>height-height: plrrect.y-=plrspeed+0.5 if key[pygame.K_s] and plrrect.bottom<height: plrrect.y+=plrspeed def shootingreloadinghandler(): global isreloading,isshooting,ammo,maxammo if isreloading==True: current_time_reload=pygame.time.get_ticks() reloadingfont = pygame.font.SysFont("Arial", 65, bold=True) reloadtext = reloadingfont.render("Reloading...", True, pygame.Color(255, 255, 255)) reloadrect = reloadtext.get_rect(center=(width//2,height//2)) screen.blit(reloadtext, reloadrect) if current_time_reload-reloadstarttime>=reloadtime: # as current time reload gets larger reload start times effect on minusing gets smaller # and thus can be above reloadtime ammo=maxammo isreloading=False if isshooting==True: current_time_shooting=pygame.time.get_ticks() if current_time_shooting-lastshoottime >= shootdebounce: isshooting=False def collisionhandler(): global score for enemyrect in enemylist: screen.blit(enemy,enemyrect) collide=pygame.Rect.colliderect(plrrect,enemyrect) collide2=pygame.Rect.colliderect(borderrect,enemyrect) if collide and dev==False: enemytouchedplayerUI() if collide2 and dev==False: enemytouchedborderUI() for bulletrect in bulletlist: collide3=pygame.Rect.colliderect(enemyrect,bulletrect) if collide3: bulletlist.remove(bulletrect) enemylist.remove(enemyrect) score+=1 def wincondition(): if score==45: pygame.display.set_caption("OMG U WON !@(#@$! thanks for playing - meowonID") screen.fill((30,125,30)) wintxt=pygame.font.SysFont("Arial",25,bold=True).render("you won :O!!!#!# (u dont get anything.)",True,pygame.Color(25,76,25)) wintxtrect=wintxt.get_rect(center=(width//2,height//2)) screen.blit(wintxt,wintxtrect) pygame.display.flip() pygame.time.delay(3500) exit() while True: for event in pygame.event.get(): if event.type==pygame.QUIT or event.type==pygame.KEYDOWN and event.key==pygame.K_ESCAPE: pygame.quit() exit() if event.type==pygame.KEYDOWN and event.key==pygame.K_j and active=="False": active="Middle" middle_start_time=pygame.time.get_ticks() if event.type==enemyevent and active=="True": newenemy=enemy.get_rect(center=(500,random.randint(15,height-15))) enemylist.append(newenemy) if event.type==pygame.KEYDOWN and event.key==pygame.K_f and active=="True": if ammo>0 and not isshooting: newbullet=bullet.get_rect(midleft=(plrrect.x+15,plrrect.y+6.5)) bulletlist.append(newbullet) ammo-=1 isshooting=True lastshoottime=pygame.time.get_ticks() if ammo==0 and not isreloading: isreloading=True reloadstarttime=pygame.time.get_ticks() if active=="False": #starting screen screen.fill((35,35,35)) startfont=pygame.font.SysFont('Arial',55,bold=True,italic=True) starttxt=startfont.render("J to start the game :D",True,pygame.Color(255,255,255)) starttxtrect=starttxt.get_rect(center=(width//2,height//2)) screen.blit(starttxt,starttxtrect) if active=="Middle": pygame.display.set_caption("meowonID's rectangle game (Middle)") screen.fill((35,35,35)) current_middle_time=pygame.time.get_ticks() middletext=pygame.font.SysFont('Arial',17,bold=True).render("Mission: kill red rectangles and dont let them collide with the border",True,pygame.Color(255,255,255)) middletext2=pygame.font.SysFont('Arial',25,bold=True).render("And main goal: get 45 score to win!!",True,pygame.Color(100,200,100)) middletext3=pygame.font.SysFont('Arial',25,bold=True).render("(And stats are in the title bar of the window)",True,pygame.Color(255,255,255)) middletextrect=middletext.get_rect(center=(width/2,height/2)) middletext2rect=middletext2.get_rect(center=(width/2,height/2+17)) middletext3rect=middletext3.get_rect(center=(width/2,height/2+17+25)) screen.blit(middletext,middletextrect) screen.blit(middletext2,middletext2rect) screen.blit(middletext3,middletext3rect) pygame.display.update() if current_middle_time - middle_start_time >=middletime: active="True" if active=="True": pygame.display.set_caption("Ingame | Ammo: " + str(ammo) + " | Score: " + str(score)) screen.fill((15,15,15)) #collision detection # for enemyrect in enemylist: # screen.blit(enemy,enemyrect) # collide=pygame.Rect.colliderect(plrrect,enemyrect) # collide2=pygame.Rect.colliderect(borderrect,enemyrect) # if collide and dev==False: # enemytouchedplayer() # if collide2 and dev==False: # enemytouchedborder() # for bulletrect in bulletlist: # collide3=pygame.Rect.colliderect(enemyrect,bulletrect) # if collide3 and dev==True: # bulletlist.remove(bulletrect) # enemylist.remove(enemyrect) collisionhandler() movementhandler() shootingreloadinghandler() wincondition() #blit screen.blit(plr,plrrect) screen.blit(border,borderrect) pygame.display.update() pygame.time.Clock().tick(fps)