from random import random, randint# imports
from math import sqrt
import pygame, time, os
from pygame.locals import *
pygame.init()
def main():
screen_size_x = 1920
screen_size_y = 1080
screen_mid_x = 960
screen_mid_y = 540
os.environ['SDL_VIDEO_CENTERED'] = '1' # initialize SDL environment
sys_font = pygame.font.Font('ressources/fonts/sys_font.ttf', 25) # load game font
screen = pygame.display.set_mode((screen_size_x, screen_size_y), pygame.FULLSCREEN) # creating a fullscreen FHD window
clock = pygame.time.Clock() # set key repeatition and initialise a clock
color, player_size, pos_player_x, pos_player_y, object_x, object_y, object_color, run = (255, 255, 255), 25, 0, 0, [], [], [], True # initialize variable
pygame.key.set_repeat(50, 50)
cam = 2
map_size = 20000
for i in range(10000): # for 10 000 values
object_x.append((random() * map_size) - int(map_size/2)); object_y.append((random() * map_size) - int(map_size/2))# create coordinates
object_color.append(tuple(int(random()*256) for _ in range(3))) # create color
while run: # main loop
screen.fill((0,0,0))
screen.blit(sys_font.render('FPS : ' + str(int(clock.get_fps())), True, (255, 255, 255), None), (1720, 20)) # display FPS
screen.blit(sys_font.render('Masse : ' + str(player_size), True, (255, 255, 255), None), (20, 60)) # display FPS
screen.blit(sys_font.render('Cam : ' + str(cam), True, (255, 255, 255), None), (20, 20)) # display FPS
mouse_x, mouse_y = pygame.mouse.get_pos()
#cam = 2 + ( 1 / player_size) NE MARCHE PAS
dist_center_mouse_x = mouse_x - screen_mid_x
dist_center_mouse_y = mouse_y - screen_mid_y
dist = sqrt(dist_center_mouse_x * dist_center_mouse_x + dist_center_mouse_y * dist_center_mouse_y )
acceleration = 5 if dist > 400 else 5 * (dist/400) # get acceleration
pos_player_x += (int(mouse_x - 959.5) / screen_mid_x) * acceleration
pos_player_y += (int(mouse_y - 539.5) / screen_mid_y) * acceleration # mouse player
for i in range(len(object_color)):
_tx = (object_x[i] - pos_player_x) * cam # to calculate if
if (_tx < 0) or (_tx > screen_size_x):
continue
_ty = (object_y[i] - pos_player_y) * cam
if (_ty < 0) or (_ty > screen_size_y):
continue
_vx = _tx - screen_mid_x ; _vy = _ty - screen_mid_y
print('_vx : ', _vx)
if sqrt(_vx * _vx + _vy * _vy ) <= player_size :
object_x[i] = (random() * map_size) - int(map_size/2)
object_y[i] = (random() * map_size) - int(map_size/2)
player_size += 1
pygame.draw.circle(screen, object_color[i], (int(_tx), int(_ty)), int(5 * cam))
pygame.draw.circle(screen, color, (screen_mid_x,screen_mid_y), int(player_size * cam)) # player
for e in pygame.event.get(): # check event
if e.type == KEYDOWN :
if e.key == K_a :
run = False # stop main loop if 'a' key pressed
elif e.key == K_e :
player_size += 1
pygame.display.update()
clock.tick(60) # build frame with 60 frame per second limitation
if __name__ == '__main':
main()