Added resizable screen
This commit is contained in:
parent
706b7e0d92
commit
f3ccc88196
@ -9,7 +9,11 @@ class Game():
|
|||||||
|
|
||||||
self.DISPLAY_WIDTH, self.DISPLAY_HEIGHT = 1280, 720
|
self.DISPLAY_WIDTH, self.DISPLAY_HEIGHT = 1280, 720
|
||||||
self.window = pygame.Surface((self.DISPLAY_WIDTH,self.DISPLAY_HEIGHT))
|
self.window = pygame.Surface((self.DISPLAY_WIDTH,self.DISPLAY_HEIGHT))
|
||||||
self.realwindow = pygame.display.set_mode((self.DISPLAY_WIDTH,self.DISPLAY_HEIGHT))
|
self.realwindow = pygame.Surface((self.DISPLAY_WIDTH,self.DISPLAY_HEIGHT))
|
||||||
|
self.screen = pygame.display.set_mode((self.DISPLAY_WIDTH,self.DISPLAY_HEIGHT),pygame.RESIZABLE)
|
||||||
|
self.screenw,self.screenh = self.DISPLAY_WIDTH,self.DISPLAY_HEIGHT
|
||||||
|
self.resizescreenw,self.resizescreenh = self.DISPLAY_WIDTH,self.DISPLAY_HEIGHT
|
||||||
|
self.screenoffx,self.screenoffy = 0,0
|
||||||
pygame.display.set_caption("Pinmik Panik !")
|
pygame.display.set_caption("Pinmik Panik !")
|
||||||
pygame.init()
|
pygame.init()
|
||||||
pygame.mixer.init()
|
pygame.mixer.init()
|
||||||
@ -133,6 +137,9 @@ class Game():
|
|||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
self.running = False
|
self.running = False
|
||||||
|
if event.type == pygame.VIDEORESIZE:
|
||||||
|
self.screenw,self.screenh = int(event.w),int(event.h)
|
||||||
|
self.screen = pygame.display.set_mode((self.screenw,self.screenh),pygame.RESIZABLE)
|
||||||
if event.type == pygame.KEYDOWN:
|
if event.type == pygame.KEYDOWN:
|
||||||
for i in self.inputs["keys"].keys():
|
for i in self.inputs["keys"].keys():
|
||||||
if event.key == self.inputs["keys"][i]["keycode"]: # Vérifie si une des touches du dico est préssée
|
if event.key == self.inputs["keys"][i]["keycode"]: # Vérifie si une des touches du dico est préssée
|
||||||
@ -145,7 +152,13 @@ class Game():
|
|||||||
if event.key == self.inputs["keys"][i]["keycode"]: # Vérifie si une des touches du dico est préssée
|
if event.key == self.inputs["keys"][i]["keycode"]: # Vérifie si une des touches du dico est préssée
|
||||||
self.inputs["keys"][i]["pressed"] = False
|
self.inputs["keys"][i]["pressed"] = False
|
||||||
|
|
||||||
self.inputs["mouse"]["pos"] = pygame.mouse.get_pos() # Position
|
x,y = pygame.mouse.get_pos()
|
||||||
|
x-=self.screenoffx
|
||||||
|
y-=self.screenoffy
|
||||||
|
x/=self.resizescreenw/self.DISPLAY_WIDTH
|
||||||
|
y/=self.resizescreenh/self.DISPLAY_HEIGHT
|
||||||
|
self.inputs["mouse"]["pos"] = x,y
|
||||||
|
|
||||||
self.inputs["mouse"]["rel"] = pygame.mouse.get_rel() # Déplacement par rapport à la frame précédente
|
self.inputs["mouse"]["rel"] = pygame.mouse.get_rel() # Déplacement par rapport à la frame précédente
|
||||||
# Getting mouse position on camera
|
# Getting mouse position on camera
|
||||||
mx = self.inputs["mouse"]["pos"][0]*self.globals["cameraw"]/self.DISPLAY_WIDTH+self.globals["camerax"]
|
mx = self.inputs["mouse"]["pos"][0]*self.globals["cameraw"]/self.DISPLAY_WIDTH+self.globals["camerax"]
|
||||||
|
@ -69,3 +69,19 @@ class GameLoop():
|
|||||||
game.realwindow.blit(temp,[0,0])
|
game.realwindow.blit(temp,[0,0])
|
||||||
for i in values:
|
for i in values:
|
||||||
i.afterdraw() # Draw on the "real screen"
|
i.afterdraw() # Draw on the "real screen"
|
||||||
|
|
||||||
|
# Draw the game window on screen
|
||||||
|
game.screen.fill([0,0,0])
|
||||||
|
|
||||||
|
w,h = game.screenw,game.screenh
|
||||||
|
height_on_width = round(game.screenw/16*9)
|
||||||
|
if height_on_width > h:
|
||||||
|
w = round(game.screenh/9*16)
|
||||||
|
else:
|
||||||
|
h = height_on_width
|
||||||
|
game.screenoffx = (game.screenw-w)/2
|
||||||
|
game.screenoffy = (game.screenh-h)/2
|
||||||
|
game.resizescreenw = w
|
||||||
|
game.resizescreenh = h
|
||||||
|
game.pygame.draw.circle(game.realwindow,[255,255,0],game.inputs["mouse"]["pos"],5)
|
||||||
|
game.screen.blit(game.pygame.transform.scale(game.realwindow,[w,h]),[game.screenoffx,game.screenoffy])
|
||||||
|
Loading…
Reference in New Issue
Block a user