Files
2019-02-27 12:11:42 +01:00

129 lines
4.1 KiB
Python

from mycolors import BLACK,WHITE,BLUE,RED
from mycamera import Camera
import random
import pygame
class Map:
def __init__(self,size):
self.size=size
self.colors=[BLACK,WHITE]
self.camera=Camera(position=[0,0],size=[30,20],borders=[0,0]+self.size)
self.generate()
def generate(self):
sx,sy=self.size
self.grid=[[0 for x in range(sx)] for x in range(sy)]
for x in range(sx):
self.grid[0][x]=1
for y in range(sy):
for x in range(sx):
if random.randint(0,9)==0:
self.grid[y][x]=1
def update(self):
pass
def showAll(self,position,size,window):
psx,psy=size
px,py=position
vision=self.camera([px-psx/2,py-psy/2],window)
window.print(text="Camera's vision: "+str(vision),position=[10,90])
#print("self.camera.position:",self.camera.position)
#print("self.camera.direction:",self.camera.direction)
vx,vy,vsx,vsy=vision
px,py=position
wsx,wsy=window.size
sx,sy=self.size
#Draw Map
for y in range(sy):
for x in range(sx):
if self.grid[y][x]==1:
_x=x
_y=(sy-1)-y
coordonnates=[_x*wsx/sx,_y*wsy/sy,wsx/sx,wsy/sy]
pygame.draw.rect(window.screen,WHITE,coordonnates,0)
#Draw Player
_y=(sy-1)-py
_x=px
coordonnates=[_x*wsx/sx,_y*wsy/sy,wsx/sx,wsy/sy]
pygame.draw.rect(window.screen,BLUE,coordonnates,0)
coordonnates=[_x*wsx/sx,(_y-1)*wsy/sy,wsx/sx,wsy/sy]
pygame.draw.rect(window.screen,BLUE,coordonnates,0)
#Draw Camera
_y=(sy-1)-(vy+vsy) #sy map size, vy vision, vsy vision size
_x=vx
coordonnates=[_x*wsx/sx,_y*wsy/sy,vsx*wsx/sx,vsy*wsy/sy]
pygame.draw.rect(window.screen,RED,coordonnates,1)
def show(self,position,size,window):
psx,psy=size
px,py=position
vision=self.camera([px-psx/2,py-psy/2],window) #takes position to return coordonnates
window.print(text="Camera's vision: "+str(vision),position=[10,50])
#print("self.camera.position:",self.camera.position)
#print("self.camera.direction:",self.camera.direction)
self.displayMap(vision,window)
self.displayPlayer(position,vision,window)
def displayMap(self,vision,window):
wsx,wsy=window.size
vx,vy,vsx,vsy=vision
vmx,vmy=int(vsx)+1,int(vsy)+1
sx,sy=self.size
for y in range(vmy):
for x in range(vmx):
_x=(vsx-1)-x
_y=(vsy-1)-y
gx=x+int(vx)
gy=y+int(vy)
dx=int(vx)-vx
dy=int(vy)-vy
#_y=(sy-1)-(vy+vsy) #sy map size, vy vision, vsy vision size
#_x=vx
coordonnates=[(dx+x)*wsx/vsx,wsy-(dy+y)*wsy/vsy,wsx/vsx,wsy/vsy]
if self.grid[gy][gx]==1:
#print(coordonnates)
pygame.draw.rect(window.screen,WHITE,coordonnates,0)
def displayPlayer(self,position,vision,window):
wsx,wsy=window.size
sx,sy=self.size
x,y=position
vx,vy,vsx,vsy=vision
#_x=(sx-1)-x
#_y=(sy-1)-y
_x=x-vx
_y=y-vy
coordonnates=[_x*wsx/vsx,wsy-_y*wsy/vsy,wsx/vsx,wsy/vsy]
pygame.draw.rect(window.screen,BLUE,coordonnates,0)
coordonnates=[_x*wsx/vsx,wsy-(_y+1)*wsy/vsy,wsx/vsx,wsy/vsy]
pygame.draw.rect(window.screen,BLUE,coordonnates,0)
def old_show(self,vision,window):
wsx,wsy=window.size
px,py,vx,vy=vision
for y in range(vy):
for x in range(vx):
X,Y=int(x+px),int(y+py)
size=[wsx/vx,wsy/vy]
print(vx,vy)
print(x,y)
print(vx-x-1,vy-y-1)
position=[(vx-x-1)*wsx/vx,(vy-y-1)*wsy/vy]
coordonnates=position+size
print(X,Y)
print("")
color=self.colors[self.grid[Y][X]]
pygame.draw.rect(window.screen,color,coordonnates,0)