View difference between Paste ID: HZXE2wpd and Pn4TSscf
SHOW: | | - or go back to the newest paste.
1
import pygame
2
vector = pygame.math.Vector2
3
BackgroundColor = 0
4
playercolor = 0
5
length = 60
6
walls = []
7
8
9
class Player(pygame.sprite.Sprite):
10
    def __init__(self):
11
        super().__init__()
12
        self.i = pygame.image.load("manBlue_gun.png").convert_alpha()
13
        self.i = pygame.transform.scale(self.i, (length,length))
14
        self.image = self.i
15
        self.rect = self.image.get_rect()
16
        self.rect.topleft = vector(length, length)
17
        self.rot = 0
18
        self.position = vector(length, length)
19
        self.move = (0,0)
20
    
21
    def update(self):
22
        keys = pygame.key.get_pressed()
23
        if keys[pygame.K_RIGHT]:
24
            self.rot = (self.rot + 10) % 360
25
            print("Rotating right")
26
            # self.image = pygame.transform.rotate(self.i, self.rot)
27
        elif keys[pygame.K_LEFT]:
28
            self.rot = (self.rot - 10) % 360
29
            print("Rotating left")
30
        self.image = pygame.transform.rotate(self.i, self.rot)
31
        pos = self.rect.center
32
        self.rect = self.image.get_rect()
33
        self.rect.center = pos
34
        # self.rect.move_ip(0,0)
35
        self.move = (0, 0)
36
        if keys[pygame.K_UP]:
37
            self.move = vector(17, 0).rotate(-self.rot)
38
        elif keys[pygame.K_DOWN]:
39
            self.move = vector(-17, 0).rotate(-self.rot)
40
41
        if not check_collision(self.rect, self.move):
42
            self.rect.move_ip(self.move)
43
        else:
44
            self.move = (0,0)
45
        self.position = vector(self.rect.center)
46
47
class bullets(pygame.sprite.Sprite):
48
    def __init__(self, angle, pos):
49
        super().__init__()
50
        self.image = pygame.Surface((10, 10))
51
        self.image.fill((0,255,0))
52
        self.rect = self.image.get_rect()
53
        self.bulletspeed = 0
54
        self.vector = vector(20, 0).rotate(-angle)
55
        self.rect.center = pos
56
57
    def update(self):
58
        self.rect.move_ip(self.vector)
59
60
class wall(pygame.sprite.Sprite):
61
    def __init__(self, c, r):
62
        super().__init__()
63
        # print(c, r)
64
        self.image = pygame.Surface((length, length))
65
        self.image.fill((0, 125, 125))
66
        self.rect = self.image.get_rect()
67
        self.row = r
68
        self.column = c
69
        self.rect.topleft = (self.column*length, self.row*length)
70
        
71
72
class enemies(pygame.sprite.Sprite):
73
    def __init__(self, c, r):
74
        super().__init__()
75
        self.i = pygame.image.load("robot1_hold.png").convert_alpha()
76
        self.i = pygame.transform.scale(self.i, (length, length))
77
        self.image = self.i
78
        self.image.fill((0,255,0))
79
        self.rect = self.image.get_rect()
80
        self.row = r
81
        self.column = c
82
        self.rect.topleft = (self.column*length, self.row*length)
83
        self.rot = 0
84
85
    # def update(self):
86
87
def check_collision(rect, movement):
88
    new_pos_rect = rect.move(movement)
89
    for w in walls:
90
        if w.rect.colliderect(new_pos_rect):
91
            return True
92
    return False
93
94
95
96
def setupmap():
97
    global walls 
98
    with open("map.txt", "r") as file:
99
        for r, row in enumerate(file):
100
            for c, element in enumerate(row):
101
                if element == "1":
102
                    print(c, r)
103
                    w = wall(c, r)
104
                    walls.append(w)
105
                elif element == "M":
106
                    print(c, r)
107
                    e = enemies(c, r)
108
                    enemies_grp.add(e)
109
                    allelements.add(e)
110
    total_rows = r + 1
111
    total_columns = c + 1
112
    return total_rows, total_columns
113
114
def update_camera(camera, player, mapwidth, mapheight):
115
    camera.x = player.position.x - (WIDTH // 2)
116
    camera.y = player.position.y - (HEIGHT // 2)
117
    # if camera.x < 0:
118
    camera.x = player.move[0]
119
    # elif camera.x > mapwidth - WIDTH:
120
    #     camera.x = mapwidth - WIDTH
121
    # if camera.y < 0:
122
    camera.y = player.move[1]
123
    # elif camera.y > mapheight - HEIGHT:
124
    #     camera.y = mapheight - HEIGHT
125
    # print("camera", camera.x)
126
    # print("Player position", player.position.x)
127
    # for e in elements:
128
    #     e.rect.move_ip(-camera.x, -camera.y)
129
    # print("Move")
130
    
131
132
# def apply_camera(camera, element):
133
#     rect = element.rect.move(-camera.x, -camera.y)
134
#     return rect   
135
136
WIDTH, HEIGHT = 800, 600
137
pygame.init()
138
window = pygame.display.set_mode((800, 600))
139
camera = pygame.Rect(-400, -300, WIDTH, HEIGHT)
140
141
run = True
142
clock = pygame.time.Clock()
143
elements = pygame.sprite.Group()
144
allelements = pygame.sprite.Group()
145
wall_grp = pygame.sprite.Group()
146
enemies_grp = pygame.sprite.Group()
147
mapsize = setupmap()
148
for w in walls:
149
    wall_grp.add(w)
150
    allelements.add(w)
151
player = Player()
152
elements.add(player)
153
allelements.add(player)
154
while run:
155
    clock.tick(30)
156
    window.fill(BackgroundColor)
157
    for event in pygame.event.get():
158
        if event.type == pygame.QUIT:
159
            run = False
160
        if event.type == pygame.KEYDOWN:
161
            if event.key == pygame.K_SPACE:
162
                b = bullets(player.rot, player.rect.center)
163
                elements.add(b)
164
                allelements.add(b)
165
    update_camera(camera, player, mapsize[1]*length, mapsize[0]*length)
166
167
    for e in allelements:
168
        # print("camera x,y ", camera.x, camera.y)
169
        e.rect.move_ip(-camera.x, -camera.y)
170
        # window.blit(e.image, apply_camera(camera, e))
171
    # for e in enemies_grp:
172
    #     # e.rect.move_ip(-camera.x, -camera.y)
173
    #     window.blit(e.image, apply_camera(camera, e))
174
    # for e in elements:
175
    #     # e.rect.move_ip(-camera.x, -camera.y)
176
    #     window.blit(e.image, apply_camera(camera, e))
177
178
    # enemies_grp.update()
179
    # enemies_grp.draw(window)
180
    # wall_grp.update()
181
    # wall_grp.draw(window)
182
    allelements.update()
183
    allelements.draw(window)
184
    pygame.display.update()
185
pygame.quit()
186