Hi i'm learning python by creating a game. I use pygame to create the game where two players fight in knight tournment. The idea of game is simple, from two sides players need to press gallop key and operating the spear to hit eachother. I have class with move of the block and i want to add the spear inside the class but i can't draw spear ...
import pygame
from sys import exit
#Class
class Knight(pygame.sprite.Sprite):
def __init__(self,pos_x, pos_y, width, height, color):
super().__init__()
#Knight image
self.image= pygame.Surface([width, height])
self.image.fill(color)
self.rect = self.image.get_rect()
self.rect.midbottom = [pos_x, pos_y]
#Knight spear
self.image_spear = pygame.Surface((200, 200))
self.image_spear.set_colorkey((0, 0, 0))
self.rect_spear = self.image_spear.get_rect(center=(pos_x, pos_y))
self.angle_spear = 0
def player_input(self):
keys = pygame.key.get_pressed()
#Moving knight
if keys[pygame.K_SPACE]:
self.move = 1
self.rect.x +=self.move
#Moving spear
if keys[pygame.K_w]:
self.angle_spear += 1
elif keys[pygame.K_s]:
self.angle_spear -= 1
def update(self):
#Update moving knight
self.player_input()
#Update spear
self.angle_spear = self.angle_spear
self.image_spear.fill(0)
pygame.draw.line(self.image_spear, (255, 255, 100), (self.pos_x, 30+self.pos_y), (100 + self.pos_x, self.poy+self.angle), 5)
self.mask = pygame.mask.from_surface(self.image)
class Ground(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image= pygame.Surface([800, 100])
self.image.fill('white')
self.rect = self.image.get_rect()
self.rect.bottomleft = [0, 400]
#screen
pygame.init()
screen = pygame.display.set_mode((800,400))
pygame.display.set_caption("Geometry_War")
clock = pygame.time.Clock()
#screen view
#ground = pygame.Rect(0, 300, 800, 200)
#ground_screen=pygame.draw.rect(screen, 'white', ground)
#start values
game_active = True
Knight1 = Knight(100, 300, 60, 60,(255,125,125))
Knight2 = Knight(700, 300, 60, 60,(255,000,125))
Ground = Ground()
#Sprite group
sprite_group=pygame.sprite.Group()
sprite_group.add(Knight1, Knight2,Ground)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
if game_active:
screen.fill(0)
sprite_group.update()
sprite_group.draw(screen)
pygame.display.flip()
pygame.display.update()
clock.tick(60)
In next step i want to get point of collision and calculate the power of hit for each player(fast*point =score). Better score wins. What i'm doing wrong?

