forked from KoblovDA/Vfqyrhfan
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vocabulary.py
150 lines (129 loc) · 4.74 KB
/
vocabulary.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import math
import numpy as np
import pygame
from numpy import sign
from numpy import float32
from pygame.draw import *
from random import randint
FPS = 60
k = 0.001 # Чувствительность мыши
leg_force = 0.01
stopper_acceleration = 0.19 * leg_force # На сколько ед\с падают составляющие скорости
ground = 9
# угол обзора(косинус от камеры)
angle_of_view = 0.3
signature_1 = [1, 1, -1, -1]
signature_2 = [1, -1, -1, 1]
speed_limit_max = 6 * leg_force
speed_limit_min = 0.2 * leg_force
LEFT = "LEFT"
RIGHT = "RIGHT"
BACKWARD = "BACKWARD"
FORWARD = "FORWARD"
ROTATE = "ROTATE"
NOTHING = "NOTHING"
AIR = (50, 150, 50)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)
GREEN = (0, 255, 0)
MAGENTA = (255, 0, 255)
CYAN = (0, 255, 255)
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREY1 = (180, 180, 180)
# -------------------------------------------------------------------
# можно собрать отдельный файл-библиотеку блоков
def get_color(id):
"""
return: цвет
"""
if id == 0:
return AIR
if id == 1:
return WHITE
if id == 2:
return BLACK
if id == 3:
return RED
if id == 4:
return GREEN
if id == 5:
return BLUE
if id == 6:
return CYAN
if id == 7:
return MAGENTA
if id == 8:
return YELLOW
def text_render(scrn, nm, point_x, point_y):
"""
Функция, отрисовывающая текст
:param scrn: поверхность для вывода
:param nm: текст для вывода
:param point_x: абсцисса левой верхней точки поверхности
:param point_y: ордината левой верхней точки поверхности
:return: ---
"""
realtime_name_font = pygame.font.SysFont("", 30)
realtime_name_texture = realtime_name_font.render(nm, False, BLACK)
scrn.blit(realtime_name_texture, (point_x, point_y))
def convert_point(point, o_start):
"""
Функция, переводящая реальные координаты в пайгеймовские.
Ест координаты в такой СО, что (0,0,0) это O_start;
Oz - направлена из экрана на смотрящего;
Ох - возрастает слева направо;
Oy - возрастает снизу вверх;
:param point: кортеж трёх координат в СО, приведенной ниже
:param o_start: центр координат в окне пайгейма
:return: только абсцисса и ордината, так преобразованные, чтобы описание функции было верно
"""
x, y, z = point
a, b, c = o_start
x = x + a
y = -y + b
return x, y
def cut(scene, order, camera, d, h):
"""
выдаёт нужный порядок отрисовки кубов
order: массив из блоков с относительной координатой, хранится order_of_output.py
scene: массив из блоков, которые вокруг игрока
camera: камера игрока
d: диаметр отрисовки блоков
h: высота отрисовки блоков
return: массив в нужном порядке отрисовки блоков
"""
t_o = []
for item in order:
x, y, z = item
x += int(camera.x + 0.5) - int(d / 2)
y += int(camera.y + 0.5) - int(d / 2)
z += int(camera.z + 0.5) - int(h / 2)
if scene.map[x][y][z]:
t_o.append((x, y, z))
return t_o
def music():
"""
при вызове включает рандомную музыку из списка (лицензия на музыку открыта)
"""
rnd = randint(1, 3)
if rnd == 1:
pygame.mixer.music.load('music\\Seven.mp3')
pygame.mixer.music.play(-1)
elif rnd == 2:
pygame.mixer.music.load('music\\Im_Alright_(Creative Commons)_FREE_vlog positive_background.mp3')
pygame.mixer.music.play(-1)
elif rnd == 3:
pygame.mixer.music.load('music\\Jason_Shaw_Solo_Acoustic_Guitar_[Creative Commons Music].mp3')
pygame.mixer.music.play(-1)
def mult(color, kof):
"""
создана для затенения сторон блоков, умножает на коэфициент яркость блоков
color: цвет в формате rgb
r: коэф яркости от 0 до 1
return: цвет в формате rgb
"""
return color[0] * kof, color[1] * kof, color[2] * kof
if __name__ == "__main__":
print("This module is not for direct call!")