forked from FAdy-200/AP_Project
-
Notifications
You must be signed in to change notification settings - Fork 0
/
userInputFady.py
126 lines (114 loc) · 4.21 KB
/
userInputFady.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
import pygame
import sys
class DashBoardUserInput:
def __init__(self):
pygame.init()
self.bg = pygame.image.load("Data/BG.png")
self.width, self.height = self.bg.get_size()
self.screen = pygame.display.set_mode((self.width, self.height)) # screen to render thing into
self.battery = pygame.image.load("Data/Battery.png")
self.big_arrow = pygame.image.load("Data/Big_Arrow.png")
self.small_arrow = pygame.image.load("Data/Small_Arrow.png")
self.brakes = pygame.image.load("Data/Brakes.png")
self.engine = pygame.image.load("Data/Engine.png")
self.flasher = pygame.image.load("Data/Flasher.png")
self.signal_right = pygame.image.load("Data/RightArrow.png")
self.signal_left = pygame.image.load("Data/LeftArrow.png")
self.seat_belt = pygame.image.load("Data/SeatBelt.png")
self.warning_sign = pygame.image.load("Data/Warning_Sign.png")
self.warning_sign_flash = 10
self.font = pygame.font.Font('freesansbold.ttf', 20)
self.mouse = pygame.mouse.get_pos() # print this when you need to find the mouse position on screen
self.battery_flag = False
self.brakes_flag = False
self.engine_flag = False
self.flasher_flag = False
self.signal_left_flag = False
self.signal_right_flag = False
self.seat_belt_flag = False
self.acceleration = 0
self.big_arrow_angle = 126
self.small_arrow_angle = 0
self.cw = False
self.cs = False
def __check_for_events(self):
self.mouse = pygame.mouse.get_pos()
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
self.__set_flags(event)
def __set_flags(self, event):
"""
Change all the required flags to be used in the render function
:param event:
:return:
"""
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
self.cw = True
self.cs = False
if event.key == pygame.K_s:
self.cw = False
self.cs = True
elif event.type == pygame.KEYUP:
self.cw = False
self.cs = False
@staticmethod
def __rotate(im, an):
nm = pygame.transform.rotate(im, an)
rect = nm.get_rect()
rect.center = 600, 508
return nm, rect
def __render(self):
"""
renders needed images based on the input
:return:
"""
self.screen.fill((254, 254, 254))
self.screen.blit(self.bg, (0, 0))
rect = self.big_arrow.get_rect()
rect.center = 600, 508
warning_rect = self.warning_sign.get_rect()
warning_rect.center = self.width // 2, 470
if self.warning_sign_flash < 10:
self.screen.blit(self.warning_sign, warning_rect)
self.warning_sign_flash += -1
if self.warning_sign_flash < 0:
self.warning_sign_flash = 20
a = 0
if self.cw and 126 >= self.big_arrow_angle >= -126:
self.acceleration -= 0.2
a = self.acceleration
elif self.cs and 126 >= self.big_arrow_angle >= -126:
self.acceleration += 0.2
a = self.acceleration
elif 126 >= self.big_arrow_angle >= -126:
if a > 0:
self.acceleration = - 1
else:
self.acceleration = + 1
elif self.big_arrow_angle == 126:
self.acceleration = 0
self.big_arrow_angle += self.acceleration
if self.big_arrow_angle > 126:
self.big_arrow_angle = 126
elif self.big_arrow_angle < -126:
self.big_arrow_angle = -126
x, y = self.__rotate(self.big_arrow, self.big_arrow_angle)
self.screen.blit(x, y)
def __check_for_warning(self):
"""
MY JOB LEAVE IT ALONE
:return:
"""
pass
def start(self):
while True:
self.__check_for_events()
self.__render()
self.__check_for_warning()
self.mouse = pygame.mouse.get_pos()
print(self.mouse)
pygame.display.flip()
x = DashBoardUserInput()
x.start()