Compare commits

..

4 Commits

Author SHA1 Message Date
3b2359aa41
Merge confilcts fixed 2024-04-04 20:03:20 +03:00
4c7572208a Remove some comments. 2024-04-04 21:33:14 +05:00
983bad10a5 Show angle in degrees. 2024-04-04 21:32:01 +05:00
f231973984 Add strafe. 2024-04-04 21:17:24 +05:00

20
main.py
View File

@ -7,6 +7,7 @@ except ImportError:
from time import time_ns, sleep from time import time_ns, sleep
from cmath import exp, pi from cmath import exp, pi
from math import acos
import pygame import pygame
import pygame.freetype import pygame.freetype
from gyro import * from gyro import *
@ -56,15 +57,13 @@ def draw(level,gPlayer,fov,res):
m = DrawnSegment(0,BLACK) m = DrawnSegment(0,BLACK)
rot = irot**(i-(res/2)) * iprot rot = irot**(i-(res/2)) * iprot
for j in level: for j in level:
#tA = MobiusAdd(j.pointA,-gPlayer.cPos)
#tB = MobiusAdd(j.pointB,-gPlayer.cPos)
try: # Function "LineIntersection" faults from time to time try: # Function "LineIntersection" faults from time to time
cInt = MobiusInt(j.pointA,j.pointB,gPlayer.cPos,rot) cInt = MobiusInt(j.pointA,j.pointB,gPlayer.cPos,rot)
except ZeroDivisionError: except ZeroDivisionError:
continue continue
if cDot(rot,MobiusAdd(cInt,-gPlayer.cPos)) > 0: if cDot(rot,MobiusAdd(cInt,-gPlayer.cPos)) > 0:
continue continue
rDist = MobiusDist(cInt,gPlayer.cPos) rDist = MobiusDist(cInt,gPlayer.cPos)*1.1
if not (j.isFinite and cBetween(j.pointA,j.pointB,cInt)): if not (j.isFinite and cBetween(j.pointA,j.pointB,cInt)):
continue continue
if (1 - m.height) > rDist: if (1 - m.height) > rDist:
@ -84,7 +83,7 @@ def renderDebugInfo(gPlayer, clock, fontSize = 18):
fps_surf = font.render("FPS: " + str(int(clock.get_fps())), font_fg, font_bg)[0] fps_surf = font.render("FPS: " + str(int(clock.get_fps())), font_fg, font_bg)[0]
cPos_surf = font.render("cPos: " + str(gPlayer.cPos), font_fg, font_bg)[0] cPos_surf = font.render("cPos: " + str(gPlayer.cPos), font_fg, font_bg)[0]
cRot_surf = font.render("cRot: " + str(gPlayer.cRot), font_fg, font_bg)[0] cRot_surf = font.render("cRot: " + str(acos(gPlayer.cRot.real) / pi * 180), font_fg, font_bg)[0]
return fps_surf, cPos_surf, cRot_surf return fps_surf, cPos_surf, cRot_surf
@ -106,13 +105,11 @@ def mainLoop():
wall_buffer = [] wall_buffer = []
while True: while True:
#framestart = time_ns()
for event in pygame.event.get(): for event in pygame.event.get():
if event.type == pygame.QUIT: if event.type == pygame.QUIT:
return True return True
if event.type == pygame.KEYDOWN: if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q: if event.key == pygame.K_r:
gPlayer.cRot *= -1 gPlayer.cRot *= -1
if event.key == pygame.K_F3: if event.key == pygame.K_F3:
debugInfo = not debugInfo debugInfo = not debugInfo
@ -129,14 +126,17 @@ def mainLoop():
gPlayer.rotate(ROT) gPlayer.rotate(ROT)
if keys[pygame.K_a]: if keys[pygame.K_a]:
gPlayer.rotate(IROT) gPlayer.rotate(IROT)
if keys[pygame.K_q]:
gPlayer += GyroVector(OFFSET * gPlayer.cRot*I, 1)
if keys[pygame.K_e]:
gPlayer -= GyroVector(OFFSET * gPlayer.cRot*I, 1)
if keys[pygame.K_w]: if keys[pygame.K_w]:
gPlayer -= GyroVector(OFFSET * gPlayer.cRot, 1) gPlayer -= GyroVector(OFFSET * gPlayer.cRot, 1)
if keys[pygame.K_s]: if keys[pygame.K_s]:
gPlayer += GyroVector(OFFSET * gPlayer.cRot, 1) gPlayer += GyroVector(OFFSET * gPlayer.cRot, 1)
display.fill(WHITE) display.fill(WHITE)
#pygame.draw.rect(display,BLACK, c_tr(Poincare2Klein(gPlayer.cPos) * -100) + (100,100),0) drawn = draw(level,gPlayer,PI/4,320)
drawn = draw(level,gPlayer,PI/2,320)
pygame.draw.rect(display,SKY, (0,0,1280,360)) pygame.draw.rect(display,SKY, (0,0,1280,360))
pygame.draw.rect(display,GROUND, (0,360,1280,360)) pygame.draw.rect(display,GROUND, (0,360,1280,360))
n = 0 n = 0
@ -157,9 +157,7 @@ def mainLoop():
pygame.display.update() pygame.display.update()
#frameend = time_ns()
clock.tick() clock.tick()
#sleep((frameend-framestart) / F_)
return True return True
def main(): def main():