微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pygame set_mode 未显示正确的大小

如何解决Pygame set_mode 未显示正确的大小

我确实设置了一种奇怪的装备,我有一个运行 RetroPie 的 RaspBerry Pi,我更改了控制台配置以添加一个系统 python,它只是从名为 python 的 ROMs 文件夹中的文件运行 python 脚本,命令行只是执行所需的 python 脚本。

嗯,这在我的 Pygame 脚本上运行良好,直到我将其全屏显示。游戏明显变慢了,所以我把它改回我的旧代码,窗口只有我屏幕大小的一半。

为了尝试解决这个问题,我使用了以下代码

display_width,display_height = 600,600
print(str(display_width) + "  " + str(display_height))
gamedisplay = pygame.display.set_mode((display_width,display_height))
print(pygame.display.get_window_size())
#header title
pygame.display.set_caption("Pirate Pigs!!!")
print(pygame.display.get_window_size())

无论我在 set_mode 中放入什么,它总是以全屏 1280,720 打开窗口。我认为这可能是 RetroPie 或 RetroArch 的问题,但它并没有用于执行此操作,并且自出现问题以来我没有更改任何 RetroPie 配置

我还尝试制作另一个脚本,它只打开一个 400、400 的窗口,但它仍然打开到 1280、720

我也认为可能是错误,因为我的图像ship.bmp比窗口大,即使我删除它,错误仍然存​​在

谢谢,所有帮助!

如果有帮助,这是我的完整代码

#Noah Hall
#03/29/2021
#PiratePigs
#to orun you need these files:
#highscore.txt
#an assets file containing the following:
#Bullet.bmp
#EvilPiratePig.bmp
#FlyingPiratePig.bmp
#PiratePigChar0.bmp
#SharpShooterPiratePig.bmp
#Ship.png

#Run this main.py file in the same file as the assets file and the highscore.txt and have the pygame library installed
#If py game is not installed type this into your terminal: python3 -m pip install -U pygame --user for mac and py -m pip install -U pygame --user for windows
#is using windows,you must change all of the "/" - forward slashes to backslashes.
#you can thank old windows developers for making their command lines / for that
#Must be run on python 3 or greater and pygame 2.0 or greater





#Imports for pirate pigs
#library for game machanics
import pygame
#librarry for randomness
import random
#library for math operations for shooting angles
import math
import os

full_path = os.path.realpath(__file__)
os.chdir(os.path.dirname(full_path))


pygame.init()
#display initiation

#demintions of window
display_width,display_height))
print(pygame.display.get_window_size())
#header title
pygame.display.set_caption("Pirate Pigs!!!")
print(pygame.display.get_window_size())
#variable colors
black = (0,0)
white = (255,255,255)
bg = (115,190,255)
#start time
clock = pygame.time.Clock()
#Is game loop var
crashed = False
#object positions relitive to this overall position which defines the camera
gameX = 0
gameY = 0
#maxshots in a row,used to prevent lag
ammo = 15
#ticker instuctions pages
sclock = 1
#is the shop showing
shop = False
#progress vars
wave = 0
score = 0
#your bullet speed
bspeed = 15
#shielding
shield = False
#Shut down game after loss
Lose = False
#give the last direction moved
lastDir = "LEFT"
select = 0
costmult = 1
#classes

class Char:
    def __init__(self,img,x,y,speed,hitx,hity,health):
        #all Vars to basic character
        self.img = pygame.image.load(img)
        self.x = x
        self.y = y
        self.speed = speed
        self.hitx = hitx
        self.hity = hity
        self.IsJump = False
        self.gravity = True
        #veLocity mass and force for gravity and jumping
        self.v = 7
        self.m = 1
        self.F = 0
        #health and strength
        self.health = health
        self.fullhealth = health
        self.damage = 1

    def draw(self):
        #to be called when ready to blit on screen
        #enable the gravity
        if self.gravity == True:
            #stops glitch that makes it where you sometimes fall through the floor
            if onFloor(self.x,self.y) == "UNDER":
                self.y = floorHeight(self.x,self.y)
                print("Under floor")
            if onFloor(self.x,self.y) == False and self.IsJump == False:
                self.y += 5
            if self.IsJump:
                self.F = (1 / 2) * self.m * (self.v**2)
                self.y -= self.F
                self.v = self.v - 1
                #reached vertex
                if self.v < 0:
                    #goes back down
                    self.m = -1
                #back to start
                if self.v == -8:
                    # making isjump equal to false
                    self.IsJump = False
                    #reset veLocity and mass
                    self.v = 7
                    self.m = 1
        #blit to the canvas
        pygame.draw.rect(gamedisplay,(255,0),(self.x,self.y + self.hity + 10,self.hitx,5))
        pygame.draw.rect(gamedisplay,(0,self.hitx * (self.health/self.fullhealth),5))
        gamedisplay.blit(self.img,self.y))

    def move(self,dir):
        #calls when you need the self to move
        self.dir = dir
        if self.dir == "LEFT":
            self.x = self.x - self.speed
        elif self.dir == "RIGHT":
            self.x = self.x + self.speed
        elif self.dir == "UP":
            self.IsJump = True
        else:
            #tells me is i made a typo,I was tired on making this mistake
            print("invalid Char.move direction")

    def gravity(self,b):
        #lowkey pretty pointless,but i used this for testing,and it is Now stuck
        self.gravity = b

    def goto(self,y):
        #teleport self,to be called by teleports
        self.x = x
        self.y = y
class Ememy(Char):
    #class that inherits char,to use as the enemies
  def __init__(self,kind,health):
    Char.__init__(self,health)
    #extra init to establish life and death and AI
    self.kind = kind
    self.alive = True
    self.whichWay = 0
    #create list for bullets to be updated and stored
    self.bullets = []
    #load image based on ememy type
    if self.kind == 0:
      self.img = pygame.image.load("assets/EvilPiratePig.bmp")
    if self.kind == 2:
      self.img = pygame.image.load("assets/SharpShooterPiratePig.bmp")
    if self.kind == 1:
      self.img = pygame.image.load("assets/FlyingPiratePig.bmp")
  def draw(self):

      #walking bad pig
    if self.kind == 0:
        #code for following player
      if player.x + gameX > 790 and player.x + gameX < 2990:
        if player.x > self.x - gameX:
          self.x += self.speed
        if player.x < self.x - gameX:
          self.x -= self.speed
      if self.x - gameX > player.x - 1 and self.x - gameX < player.x + player.hitx + 1 and self.y - gameY > player.y - 1 and self.y - gameY < player.y + player.hity + 5:
        player.health -= 1
        self.alive = False
      if self.health <= 0:
         self.alive = False
        
        #flying bad pig
    if self.kind == 1:
        #code for flying pig
      if self.y > 300:
        self.whichWay = 0
      if self.y < 100:
        self.whichWay = 1
      if self.whichWay == 0:
        self.y -= self.speed
      if self.whichWay == 1:
        self.y += self.speed
      #shoot bullets on average every one and a half seconds in both directions
      if random.randint(0,60*1.5) == 1:
        self.bullets.append(Projectile("assets/Bullet.bmp",self.x,self.y,3))
        self.bullets.append(Projectile("assets/Bullet.bmp",180,3))
      for obj in self.bullets:
        obj.shoot()
        obj.draw()
      
      #shooting
                
    if self.kind == 2:
        #code for randomly shooting in random direction on average every half second
      if random.randint(0,30) == 1:
        self.bullets.append(Projectile("assets/Bullet.bmp",random.randint(-180,180),3))
      for obj in self.bullets:
        obj.shoot()
        obj.draw()
       #Draw when in camera 
    if self.x - gameX > 0 and self.x - gameX < display_width and self.y - gameY > 0 and self.y - gameY < display_height:
      pygame.draw.rect(gamedisplay,(self.x - gameX,self.y - gameY + self.hity + 10,5))
      pygame.draw.rect(gamedisplay,5))   
      gamedisplay.blit(self.img,self.y - gameY))
class Object:
    #class for ordinary non moving objects
    def __init__(self,y):
        self.img = pygame.image.load(img)
        self.x = x
        self.y = y

    def draw(self):
        #blit this boring object
        gamedisplay.blit(self.img,self.y - gameY))
class Floor:
    #defines horizontal hit Box
    def __init__(self,width,height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
class Wall:
    #defines vertical hit Boxes
    def __init__(self,height,direction):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.direction = direction
def onWallLeft():
    #keeps player from walking through a defined wall on the left
    for obj in wall:
      if obj.x - gameX < player.x and obj.x + obj.width - gameX > player.x and obj.y - gameY < player.y and obj.y - gameY + obj.height > player.y and obj.direction == 1:
        print("hitL")
        player.x += 10
def onWallRight():
    #keeps player from walking through a defined wall on the right
    for obj in wall:
      if obj.x - gameX < player.x and obj.x + obj.width - gameX > player.x and obj.y - gameY < player.y and obj.y - gameY + obj.height > player.y and obj.direction == -1:
        print("hitR")
        player.x -= 10
class TxtBox:
    #makes making text Boxes easy
  def __init__(self,size):
      #inital properties
    self.x = x
    self.y = y
    self.size = size
    #Set up font
    self.font = pygame.font.SysFont('timesnewroman',size)
    self.text = str("")
    self.rend = 1
  def draw(self):
      #draw the text,blits it
    self.rend = self.font.render(self.text,True,white)
    #made a way to center text,becasue it was getting repetitive
    if self.x == "CENTER":
      self.textRect = self.rend.get_rect()
      self.textRect.center = (display_width//2,self.y)
      gamedisplay.blit(self.rend,(self.textRect))
    else:
      gamedisplay.blit(self.rend,self.y))
    self.text = ""
  def setText(self,string):
      #method for cahnging text
    self.text = string
class Projectile(Object):
    #class to create bullets
  def __init__(self,dir,speed):
    self.dir = dir
    self.speed = speed
    Object.__init__(self,y)
  
  def shoot(self):
      #code to update bullet position
    self.x -= math.sin(math.radians(self.dir + 90)) * self.speed
    self.y += math.cos(math.radians(self.dir + 90)) * self.speed
class Wave:
    #class to create a wave of ememies
  def __init__(self,difficulty,walking,flying,shooting):
      #reset old wave,and make variables for amounts of new ememies
    badPigs.clear()
    self.difficulty = difficulty
    self.walking = walking
    self.flying = flying
    self.shooting = shooting
    self.count = self.walking + self.flying + self.shooting
    
  def start(self):
      #method for starting wave
    for i in range(self.flying):
      badPigs.append(Ememy("assets/PiratePigChar0.bmp",random.randint(300,4000),120,5,32,1,3))
    for i in range(self.walking):
      badPigs.append(Ememy("assets/PiratePigChar0.bmp",random.randint(800,3000),295,0.5,1))
    for i in range(self.shooting):
      badPigs.append(Ememy("assets/PiratePigChar0.bmp",2,2))
def onFloor(x,y):
    #medthod for testing is player is on the ground or in the air
    for obj in floor:
        if y + gameY > obj.y - 1 and y + gameY < obj.y + 1 and x + gameX > obj.x and x + gameX < obj.x + obj.width:
            return True
        elif y + gameY < obj.y + obj.height and y + gameY > obj.y - 1 and x + gameX > obj.x and x + gameX < obj.x + obj.width:
            return str("UNDER")
        else:
            continue
    return False
def floorHeight(x,y):
    #this method returns the y position of the floor relitive to the camera
    for obj in floor:
        if y > obj.y - gameY - 1 and x > obj.x - gameX and x < obj.x - gameX + obj.width:
            return obj.y - gameY
def highscore(score):
    #this method updates the highscore if the score is higher than the prevIoUs highscore then it updates,this function always returns the current highscore
#opens the file to save the highscore
  f = open('highscore.txt','r')
  #assigns the var the data of the file
  Highscore = f.read()
  f.close()
  if score > int(Highscore):
    #if there is a new highscore write it to the file
    Highscore = score
    f = open('highscore.txt','a')
    f.truncate(0)
    f.write(str(Highscore))
    f.close()
  return Highscore
def highwave(Wave):
    #this method updates the highscore if the score is higher than the prevIoUs highscore then it updates,this function always returns the current highscore
#opens the file to save the highscore
  f = open('highWave.txt','r')
  #assigns the var the data of the file
  HighWave = f.read()
  f.close()
  if score > int(HighWave):
    #if there is a new highscore write it to the file
    HighWave = Wave
    f = open('highWave.txt','a')
    f.truncate(0)
    f.write(str(HighWave))
    f.close()
  return HighWave
class Button:
    #class for making buttons
  def __init__(self,color,height):
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.color = color
  def draw(self):
      #draws the button
    pygame.draw.rect(gamedisplay,self.color,self.width,self.height))

##Method for computer mouse aim
##  def isHover(self):
##      #method for detecting hover on button
##    if pos[0] > self.x and pos[0] < self.x + self.width and pos[1] > self.y and pos[1] < self.y + self.height:
##      return True
##    else:
##      return False

def joyDir():

    horiz_axis_pos = joystick[0].get_axis(1)
    vert_axis_pos = joystick[0].get_axis(0)
    if horiz_axis_pos > 0:
        return str("RIGHT")
    elif horiz_axis_pos < 0:
        return str("LEFT")
    elif vert_axis_pos > 0:
        return str("DOWN")
    elif vert_axis_pos < 0:
        return str("UP")
    else:
        return False

def joyBut():
    for j in range(joystick_count):    
        for i in range( joystick[j].get_numbuttons() ):
            
            if joystick[j].get_button( i ) == True:
                testTxt.setText("joystick" + str(j) + "    " + str(i)) 

    #init object's lists:
floor = []
wall = []
bullet = []
badPigs = []
waves = []
joystick = []
#init ship
myship = Object("assets/Ship.bmp",-200)
  #ship floors init
floor.append(Floor(0,760,10))
floor.append(Floor(740,3315 - 740,10))
floor.append(Floor(3315,10))
wall.append(Wall(745,20,200,1))
wall.append(Wall(3300,30,-1))
#intitalize player
player = Char("assets/PiratePigChar0.bmp",display_width / 2,10)
#init test badguy
badPigs.append(Ememy("assets/PiratePigChar0.bmp",300,2))
#init instruction
inst = TxtBox("CENTER",75,15)
inst2 = TxtBox("CENTER",92,15)
testTxt = TxtBox("CENTER",100,30)
#init score
scr = TxtBox(10,15)
highscr = TxtBox(10,40,15)
highwa = TxtBox(10,52,15)

#Wave info
wavetxt = TxtBox("CENTER",350,20)
badpigleft = TxtBox("CENTER",371,10)
#waves
wave1 = Wave(0,0)
wave2 = Wave(0,3,1)
wave3 = Wave(0,3)
wave4 = Wave(0,3)
wave5 = Wave(0,10,3)

#shop init
wel = TxtBox("CENTER",25)
xBox = TxtBox(display_width - 25,25)
shopinst = TxtBox("CENTER",20)
healthbutton = Button(white,display_width / 4 - 142,95,95)
maxhealthbutton = Button(white,display_width / 2 - 142,95)
gunspeedbutton = Button(white,(display_width * 3)  / 4 - 142,95)
gundamagebutton = Button(white,display_width - 142,95)

#gun cooldown
cooldown = 10
cd = 10
#highscore read,init
f = open('highscore.txt','r')
Highscore = f.read()
print(Highscore)
f.close()
#highWave read,init
f = open('highWave.txt','r')
HighWave = f.read()
print(HighWave)
f.close()
click = False
#joystick init
joystick_count = pygame.joystick.get_count()
if joystick_count == 0:
    # No joysticks!
    print("Error,I didn't find any joysticks.")
else:
# Use joystick and initialize it
    for i in range(joystick_count):
        joystick.append(pygame.joystick.Joystick(i))
        joystick[i].init()
        
keys = pygame.key.get_pressed()

#Loops for pirate pigs

   
while not crashed:
    #initallizes keys and stores them in keys
       
   
    #test for pygame events
    for event in pygame.event.get():
        keys = pygame.key.get_pressed()
        #test for game quit
        if event.type == pygame.QUIT:
            crashed = True
        #test for mouse button down
        if joystick[0].get_button(7) == True:
            click = True
        else:
            click = False
        if keys[pygame.K_q] or joystick[0].get_button(11) == True:
            crashed = True
          #test for spacebar down
        if event.type == pygame.KEYDOWN and keys[pygame.K_SPACE] or joystick[0].get_button(10) == True:
          sclock += 1
          #test for down arrow for shielding
        if keys[pygame.K_s] or keys[pygame.K_DOWN] or joyDir() == "DOWN":
            shield = True
        else:
            shield = False
           
#update vars
    joyBut()
    highscore(score)
    highwave(wave)
    #set text for dislay that constantly updates
    scr.setText("score: " + str(score))
    highscr.setText("Highscore: " + str(Highscore))
    highwa.setText("Highest Wave: " + str(highwave(wave)))
    gamedisplay.fill(bg)
    wavetxt.setText("You're on Wave: " + str(wave))
    badpigleft.setText("There are " + str(len(badPigs)) + " pigs left")
    #Game logic goes under here

    
    
    #Keys pressed
    #Char Movement
    if (keys[pygame.K_a] or keys[pygame.K_LEFT] or joyDir() == "LEFT") and player.x > 299 and shield == False:
        player.move("LEFT")
        lastDir = "LEFT"
    if (keys[pygame.K_d] or keys[pygame.K_RIGHT] or joyDir() == "RIGHT") and player.x < display_width - 299 and shield == False:
        # increment in x
        player.move("RIGHT")
        lastDir = "RIGHT"
    if (keys[pygame.K_w] or keys[pygame.K_UP] or joystick[0].get_button(9) == True)  and shield == False:
        # increment in y force]
        player.move("UP")
    
    #Shooting
    cd -= 1
    #makes sure we are capable of shooting
    if click and cd < 0 and shield == False:
       #angle = math.degrees(math.atan2(player.y-0,player.x - 0))
      if lastDir == "RIGHT":
        angle = 180
      if lastDir == "LEFT":
        angle = 0

    #make and shoot a bullet
      bullet.append(Projectile("assets/Bullet.bmp",player.x + gameX,player.y + 15 + gameY,angle,bspeed))
      print(len(bullet))
      cd = cooldown
      #loops through a copied list to test if bullet should show,used to reduce lag
    for obj in bullet[:]:
      if obj.x > display_width or obj.x < 0 or obj.y > display_height or obj.y < 0:
        pass
      if cd < -100 or len(bullet) > ammo + 1:
        bullet.clear()
        #loops through copied list to test is pig is hit
      for i in badPigs[:]:
        if obj.x > i.x and obj.x < i.x + i.hitx and obj.y > i.y and obj.y < i.y + i.hity:
          i.health -= player.damage
        #this code is used to fix a list error that would occur when a bullet hit two ememies at once and the list would try to delete the same ememy
          try:
            bullet.remove(obj)
          except ValueError:
            pass
      obj.shoot()
     #Loops through all ememy bullets to test if player was hit,and was not sheilding
    for obj in badPigs[:]:
      for i in obj.bullets[:]:
        if i.x - gameX > player.x and i.x - gameX < player.x + player.hitx and i.y - gameY > player.y and i.y - gameY < player.y + player.hity and shield == False:
          player.health -= 1
          #fixes error where bullets from the list would try to get removed did not exist
          try:
            obj.bullets.remove(i)
          except ValueError:
            pass
        i.shoot()
    for i in badPigs[:]:
      if i.alive == False or i.health == 0 or i.health < 0:
          #fixes error where pig that did not exist tried to get removed
        try:
          badPigs.remove(i)
          score += 10
        except ValueError:
          pass
          
    

#Moves camera position
    if player.x < 300 and (keys[pygame.K_a] or keys[pygame.K_LEFT] or joyDir() == "LEFT"):
        gameX = gameX - 5
        
    if player.x > display_width - 300 and (keys[pygame.K_d] or keys[pygame.K_RIGHT] or joyDir() == "RIGHT"):
        gameX = gameX + 5
        
    if player.y > display_height - 200:
        gameY = gameY + 5
        player.y = player.y - 5
        
       
    #call methods for kepping player in walls
    onWallLeft()
    onWallRight()
#Ship teleports
    if player.x + gameX > 830 and player.x + gameX < 900:
      inst2.setText("Press Space To Go Up")
      if keys[pygame.K_SPACE] or joystick[0].get_button(10) == True:
        player.goto(player.x - 250,0)
        gameY -= 100
        print("executed left up")
        #instruction and executing to enter the shop
    if player.x + gameX > 700 and player.x + gameX < 780:
      inst2.setText("Press Space To Enter Shop")
      if keys[pygame.K_SPACE] or joystick[0].get_button(10) == True:
        print("Enter Shop")
        shop = True
    else:
      shop = False
      
    if player.x + gameX > 3315 - 30 and player.x + gameX < 3315:
      inst2.setText("Press Space To Go Up")
      if keys[pygame.K_SPACE] or joystick[0].get_button(10) == True:
        player.goto(player.x + 50,0)
        gameY -= 100
        print("executed left up")
#pirate pigs gameplay
        #instructions
    if sclock == 1:
      inst2.setText("Use the arrow keys to move (Press space to see next instructions)")
    elif sclock == 2:
      inst2.setText("Click to shoot at ememies")
    elif sclock == 3:
      inst2.setText("Kill all of the ememies in a wave to move on")
    elif sclock == 4:
      inst2.setText("The waves get harder as you go")
    elif sclock == 5:
      inst2.setText("Upgrade yourself in the shop to help you get far")
    elif sclock == 6:
      inst2.setText("If you lose all you heath you die")
    
    else:
      pass
#Once game begins show instructions for inital waves to get players comfortable with the game
    if wave == 1:
      inst2.setText("Dont let these guys run into you")
    if wave == 2:
      inst2.setText("There are so many!!!")
    if wave == 3:
      inst2.setText("These guys shoot all around")
    if wave == 3:
      inst2.setText("We got this in the bag until pigs fly... uh oh")
    if len(badPigs) == 0:
      inst.setText("Press return to move to next wave")
      if(keys[pygame.K_RETURN] or joystick[0].get_button(4) == True):
        wave += 1
        #wave creation
        #set parameters for the intals waves to follow with the instruction text
        if wave == 1:
            currentWave = Wave(0,0)
            inst2.setText("Dont let these guys run into you")
        elif wave == 2:
            currentWave = Wave(0,0)
            inst2.setText("There are so many!!!")
        elif wave == 3:
            currentWave = Wave(0,0)
            inst2.setText("These guys shoot all around")
        elif wave == 4:
            currentWave = Wave(0,1)
            inst2.setText("We got this in the bag until pigs fly... uh oh")
            #seets rules for all waves after 4 and makes them,harder as you progress through the game
        elif wave > 4 and wave < 15.1:
            currentWave = Wave(1,round(wave),round(wave-3),round(wave-4))
        elif wave > 15 and wave < 30.1:
            currentWave = Wave(1,round(wave * 2),round(wave))
        elif wave > 30 and wave < 50.1:
            currentWave = Wave(1,round(wave * 2.2),round(wave * 1.5),round(wave*1.5))
        elif wave > 50 and wave < 100.1:
            currentWave = Wave(1,round(wave*2))
        elif wave > 100:
            currentWave = Wave(round(4*(wave/100)),round(wave**1.05 * 3.5),round(wave**1.05 * 3),round(wave**1.05*2))
        else:
          currentWave.start()
        currentWave.start()
        
      
    

    

#all drawing here
    #use all the draw methods i nthe classes to blit and update odjects and characters and ememies
    myship.draw()
    player.draw()
    inst.draw()
    inst2.draw()
    scr.draw()
    testTxt.draw()
    highscr.draw()
    highwa.draw()
    wavetxt.draw()
    badpigleft.draw()
    if len(badPigs) != 0:
      pygame.draw.rect(gamedisplay,(display_width/2 - 100,375,200 * (len(badPigs)/currentWave.count),5))
    #draw from lists
    for obj in bullet:
        obj.draw()
    for obj in badPigs:
        obj.draw()


    #########shop#########

    #only allow entrence in the shop is you have positive money,or the shop will think you can bad credit  
    if shop and score > 0:
      gamedisplay.fill((40,40))
      if joyDir() == "LEFT":
          select -= 1
         
      if joyDir() == "RIGHT":
          select += 1
          
      if select > 3:
          select = 0
      if select < 0:
          select = 3
#heath restore upgrade
      if select == 0:
        healthbutton.color = (200,200)
        shopinst.setText("Restore health to the max,Cost: " + str(30))
      else:
        healthbutton.color = white
      
      if select == 0 and click:
        player.health = player.fullhealth
        score -= 30
        shop = False
#maxheath upgrade
      if select == 1:
        maxhealthbutton.color = (200,200)
        shopinst.setText("Increase the max health level. Cost: " + str(5 * costmult))
      else:
        maxhealthbutton.color = white
       
      if select == 1 and click:
        player.fullhealth += 1
        costmult += 1
        score -= 5 * costmult
        shop = False
#gun speed upgrade
      if select == 2:
        gunspeedbutton.color = (200,200)
        shopinst.setText("Increase the speed of bullets. Cost:"+ str(10 * costmult))
      else:
        gunspeedbutton.color = white
        
      if select == 2 and click:
        bspeed += 1
        costmult += 1
        score -= 10 * costmult
        shop = False
#gun damage upgrade
      if select == 3:
        gundamagebutton.color = (200,200)
        shopinst.setText("Upgrade the amount of damage per bullet. Cost: " + str(10 * costmult))
      else:
        gundamagebutton.color = white

      if select == 3 and click:
        player.damage += 1
        costmult += 1
        shop = False

  #Shop Drawings
        #set the text for the shop
      wel.setText("WELCOME TO THE SHOP")
      xBox.setText("X")
    #draw all of the buttons to the canvas
      healthbutton.draw()
      maxhealthbutton.draw()
      gunspeedbutton.draw()
      gundamagebutton.draw()
      shopinst.draw()
      #draw the text to the canvas
      xBox.draw()
      wel.draw()


    elif shop and score < 0.1:
      shopinst.setText("You need more money to enter shop")
      shopinst.draw()
      shopinst.setText("")
    if player.health == 0 or player.health < 0:
      Lose = True
    if Lose == True:
      gamedisplay.fill((40,40))
      wel.setText("You are a loser")
      wel.draw()
      pygame.time.wait(60*30)
      crashed = True

    #testing script that shows me the x and y coords and their relative coords to the camera and the max health in the terminal
    #update the display at 60 frames for second
    pygame.display.update()
    clock.tick(60)
#if out of the game loop quit the game
pygame.quit()
quit()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。