Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
cf2bab4
dummy commit
fatmaasal Feb 13, 2017
21f9770
dummy commit2
elifdiril Feb 13, 2017
6c29fe0
Merge pull request #1 from elifdiril/master
fatmaasal Feb 13, 2017
3085829
Dummy commit.
AysenurA Feb 13, 2017
c2b2b1c
Merge pull request #2 from AysenurA/master
fatmaasal Feb 13, 2017
ec14faa
power item added
elifdiril Mar 9, 2017
9d41086
Merge pull request #7 from elifdiril/master
fatmaasal Mar 9, 2017
36887a7
Enemy health bar developed
fatmaasal Mar 12, 2017
f758f45
Healt count tutuldu.Checkpoint için başlangıç yapıldı.
AysenurA Mar 12, 2017
07bb230
Merge pull request #8 from AysenurA/master
fatmaasal Mar 12, 2017
1828566
collectible update
elifdiril Mar 17, 2017
23da34d
empty level updated
elifdiril Mar 17, 2017
daa3b7f
controled by r
elifdiril Mar 17, 2017
653acd2
trying to work r button
elifdiril Mar 18, 2017
31428c7
Merge pull request #9 from elifdiril/master
fatmaasal Mar 18, 2017
3e63af0
Enemylerin can barları için geliştirmeler yapıldı.
fatmaasal Mar 19, 2017
21b330d
Add health image
AysenurA Mar 19, 2017
88c7451
Merge branch 'master' into master
fatmaasal Mar 19, 2017
4ed4653
Merge pull request #10 from AysenurA/master
fatmaasal Mar 19, 2017
ca708f1
Merge conflicts fixed
AysenurA Mar 19, 2017
28c5852
Merge pull request #11 from AysenurA/master
fatmaasal Mar 20, 2017
c8dacf8
r ile atis sinirlandirildi
elifdiril Mar 20, 2017
7b117cf
item visible
elifdiril Mar 22, 2017
7e8a493
item visible
elifdiril Mar 22, 2017
e83110b
Make health icon active
AysenurA Mar 22, 2017
e207539
Merge pull request #12 from elifdiril/master
fatmaasal Mar 23, 2017
1cea333
Merge pull request #13 from AysenurA/master
fatmaasal Mar 23, 2017
a604f15
bugs fixed
elifdiril Mar 23, 2017
1383c0b
Merge pull request #14 from elifdiril/master
fatmaasal Mar 24, 2017
7a752f5
health bar commit
fatmaasal Mar 26, 2017
dc72407
Merge branch 'master' of https://github.com/fatmaasal/Chaos-Projectile
fatmaasal Mar 26, 2017
6e68cb7
Checkpoint yapıldı
AysenurA Mar 26, 2017
e9e359e
Merge pull request #15 from AysenurA/master
fatmaasal Mar 26, 2017
b9778aa
Health bar
fatmaasal Apr 3, 2017
66b9266
Make quit menu
AysenurA Apr 3, 2017
4cd4d1c
Merge pull request #16 from AysenurA/master
fatmaasal Apr 4, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .idea/Chaos-Projectile.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/dictionaries/user.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

888 changes: 888 additions & 0 deletions .idea/workspace.xml

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
 Chaos Projectile - Run 'n' Gun meets RPG
==========================================

**** A commit **** /** FATMA */
**** A commit made by Elif ****
****A commit made by Ayşenur***
Synopsis
--------

Expand Down
32 changes: 32 additions & 0 deletions src/animationsystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,12 @@ def notify(self, event):
entity_ID = event.entity_ID
if isinstance(event, events.UpdateImagePosition):
self.update_image_position(entity_ID, event.new_position)

if entity_ID in self.world.appearance:
if not self.world.appearance[entity_ID].play_animation_till_end and not self.stun_animation_running(entity_ID):
# Fatma
if isinstance(event, events.UpdateEnemysHpUI):
self.update_enemys_hp_ui(entity_ID)
if isinstance(event, events.EntityAttacks):
self.play_attack_animation(entity_ID, event.attack_Nr)
elif isinstance(event, events.EntityJump):
Expand Down Expand Up @@ -132,6 +136,7 @@ def update_image_position(self, entity_ID, new_position):
"""
if entity_ID in self.world.appearance:
self.world.appearance[entity_ID].rect.center = new_position

#When moving object was a player
if self.world.player == entity_ID:
#Update orb direction correspondent aim direction and
Expand All @@ -145,13 +150,40 @@ def update_image_position(self, entity_ID, new_position):
hp_ID = self.world.players[entity_ID].hp_ID
self.world.appearance[hp_ID].rect.center = self.world.appearance[orb_ID].rect.center

# aysenur
health_ID = self.world.players[entity_ID].health_ID
self.world.appearance[health_ID].rect.center = self.world.appearance[orb_ID].rect.center
if entity_ID in self.world.ai:
hp_ID = self.world.enemys[entity_ID].hp_ID
directionX = self.world.direction[entity_ID][0]
directionY = self.world.direction[entity_ID][1]
self.world.appearance[hp_ID].rect.center = (directionX*64+ self.world.collider[entity_ID].center[0],
directionY*64+ self.world.collider[entity_ID].center[1])


def update_players_hp_ui(self, player_ID):
players_health = self.world.hp[self.world.players[player_ID].hp_ID]
hp_image_index = players_health.points // (players_health.max // (len(players_health.hp_sprites) - 1))
if(hp_image_index < 0):
hp_image_index = 0
players_health.current_image = players_health.hp_sprites[hp_image_index]
self.world.appearance[self.world.players[player_ID].hp_ID] = players_health.current_image
#aysenur
def update_players_health_ui(self, player_ID):
players_health = self.world.hp[self.world.players[player_ID].health_ID]
hp_image_index = players_health.points // (players_health.max // (len(players_health.hp_sprites) - 1))
if(hp_image_index < 0):
hp_image_index = 0
players_health.current_image = players_health.hp_sprites[hp_image_index]
self.world.appearance[self.world.players[player_ID].health_ID] = players_health.current_image
#Fatma
def update_enemys_hp_ui(self,enemy_ID):
enemys_health = self.world.hp[self.world.enemys[enemy_ID].hp_ID]
print(enemys_health.max)
if(enemys_health.points<enemys_health.max):
hp_image_index=3
enemys_health.current_image = enemys_health.hp_sprites[hp_image_index]
self.world.appearance[self.world.enemys[enemy_ID].hp_ID] = enemys_health.current_image

def idle_animation_running(self, entity_ID):
current_animation = self.world.appearance[entity_ID].current_animation
Expand Down
3 changes: 3 additions & 0 deletions src/collectible.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ def handle_collision_event(self, collider_ID):
elif "pierce" in tags:
attack = self.world.attacks[collider_ID][0]
attack.piercing = True
elif "power" in tags:
attack = self.world.attacks[collider_ID][0]
attack.amount += 15
#Destroy collectible
self.remove_item()

Expand Down
80 changes: 69 additions & 11 deletions src/combatsystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
:platform: Unix, Windows
:synopsis: Handles collision between characters and projectiles, handles attacks etc.
"""

import os
import time
import events
import pygame


class CombatSystem():
Expand All @@ -26,7 +28,7 @@ def __init__(self, event_manager, world):
self.event_manager.register_listener(self)

self.world = world

self.healthCount = 3 #Aysenur
self.reset_the_world = False

def notify(self, event):
Expand Down Expand Up @@ -85,26 +87,74 @@ def check_projectile_collision(self):
players_health = self.world.hp[self.world.players[player_ID].hp_ID]
#Decrease HP
players_health.points -= attack.damage
update_ui_ev = events.UpdatePlayersHpUI(player_ID)
update_ui_ev = events.UpdatePlayersHpUI(collider_ID)
self.event_manager.post(update_ui_ev)
#Send stun event
stun_ev = events.EntityStunned(player_ID, attack.stun)
self.event_manager.post(stun_ev)
else:
#No more Hp left. Player dies!
ev_die = events.EntityDies(collider_ID)
self.event_manager.post(ev_die)
#aysenur
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (250, 0, 0)
YELLOW = (250, 140, 0)
BasicFont = pygame.font.Font("data/FreeSans.ttf", 100)
BasicFont2 = pygame.font.Font("data/FreeSans.ttf", 30)
self.healthCount = self.healthCount - 1
players_health = self.world.hp[self.world.players[collider_ID].hp_ID]
if self.healthCount!=0:
self.world.game_paused = True
self.world.screen.fill(BLACK)
text3 = BasicFont2.render("One life has gone!", True, WHITE)
text4 =BasicFont2.render(str(self.healthCount), 1,RED)
text5 = BasicFont2.render("more left!", True,RED)
self.world.screen.blit(text3, (300, 300))
self.world.screen.blit(text4,(350,350))
self.world.screen.blit(text5, (400,350))
pygame.display.flip()
pygame.display.update()
time.sleep(10)
self.world.game_paused=False
players_health.points = players_health.max
update_ui_ev = events.UpdatePlayersHpUI(collider_ID)
self.event_manager.post(update_ui_ev)
if self.healthCount == 0:
self.healthCount=3
self.world.game_paused = True
self.world.screen.fill(BLACK)
text = BasicFont.render("GAME OVER!", True, WHITE)
self.world.screen.blit(text,(150,100))
pygame.display.flip()
image = pygame.image.load(os.path.join('data', 'restart.png')).convert_alpha()
rect = image.get_rect()
rect.x, rect.y = (200, 250)
self.world.screen.blit(image, rect)
text1 = BasicFont2.render("Press R to RESTART", True,YELLOW)
self.world.screen.blit(text1, (100,450))
pygame.display.flip()
image = pygame.image.load(os.path.join('data', 'exit.png')).convert_alpha()
rect = image.get_rect()
rect.x, rect.y = (500, 250)
self.world.screen.blit(image, rect)
text2 = BasicFont2.render("Press Q to QUIT", True,RED)
self.world.screen.blit(text2, (500,450))
pygame.display.flip()
pygame.display.update()

'''
projectile.life = -1
ev_die = events.EntityDies(projectile.entity_ID)
self.event_manager.post(ev_die)
'''
#Player hits enemy
elif collider_ID in self.world.ai and attacks_ID == player_ID:
if self.world.hp[collider_ID].points > 0:
enemys_health = self.world.hp[collider_ID]
#Decrease HP
if self.world.hp[self.world.enemys[collider_ID].hp_ID].points > 0:
enemys_health = self.world.hp[self.world.enemys[collider_ID].hp_ID]
#Decrease HP
enemys_health.points -= attack.damage
update_enemy_ui_ev = events.UpdateEnemysHpUI(collider_ID)
self.event_manager.post(update_enemy_ui_ev)
#Send stun event
stun_ev = events.EntityStunned(collider_ID, attack.stun)
self.event_manager.post(stun_ev)
Expand Down Expand Up @@ -136,9 +186,17 @@ def check_projectile_collision(self):
def remove_dead_entities(self):
for entity_ID in self.world.to_remove:
self.world.destroy_entity(entity_ID)
#Aysenur
if entity_ID == self.world.player:
self.reset_the_world = True
self.world.to_remove = list()
if self.healthCount ==0:
self.world.game_paused=True
quit_ev = events.QuitEvent()
self.event_manager.post(quit_ev)
else:
self.world.reset_the_world()


self.world.to_remove = list()

def execute_attack(self, entity_ID, attack_Nr, spawn_attack_pos=None, attack_dir=None):
"""Entity executes one of its possible attacks if cooldown is ready.
Expand Down Expand Up @@ -204,4 +262,4 @@ def execute_attack(self, entity_ID, attack_Nr, spawn_attack_pos=None, attack_dir
self.world.appearance[effect_ID].play_animation = True

# def handle_collision(self, collider_ID, collidee_ID):
# pass
# pass
40 changes: 38 additions & 2 deletions src/components.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
"""

#from enum import Enum
import pygame
import chaosparticle

import os
Expand Down Expand Up @@ -140,6 +139,27 @@ def __init__(self, x, y, max_x, max_y):
self.y = y
self.max_x = max_x
self.max_y = max_y
#aysenur
class Life():
def __init__(self, h, segments=None, h_sprite_sheet=None):
self.max = h
self.points = h
self.h_sprites = list()
width =250
height =250
#Store needed images
if not segments:
segments = 1
if h_sprite_sheet:
for counter in range(segments):
#Create a new blank image for the sprite
image = pygame.Surface([width, height], pygame.SRCALPHA)
image.blit(h_sprite_sheet, (0, 0), (counter*width, 0,
width, height))
image.convert_alpha()
self.h_sprites.append(Appearance(image))
self.current_image = self.h_sprites[segments-1]


class Health():
def __init__(self, hp, segments=None, hp_sprite_sheet=None):
Expand Down Expand Up @@ -311,14 +331,30 @@ class Player():
- *orb_ID* (int): reference to the orb entity, that belongs this player
"""

def __init__(self, orb_ID, hp_ID):
def __init__(self, orb_ID, hp_ID,health_ID):
"""
:param orb_ID: reference to the orb entity, that belongs this player
:type orb_ID: int
"""
self.orb_ID = orb_ID
self.hp_ID = hp_ID
self.health_ID = health_ID


class Enemy():
"""Marks an entity as a player character.

:Attributes:
- *name* (string): name of the character
- *orb_ID* (int): reference to the orb entity, that belongs this player
"""

def __init__(self,hp_ID):
"""
:param orb_ID: reference to the orb entity, that belongs this player
:type orb_ID: int
"""
self.hp_ID = hp_ID
class Direction(list):
"""Direction of an entity is a simple list with two components that shows its aim/view direction."""
pass
8 changes: 6 additions & 2 deletions src/controlSettingScreen.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class SelectedUI:
MOVE_WITH_HAT = 9
AIM_WITH_HAT = 10
USE_DEFAULT_CONTROLS = 11

AIM_WITH_R = 12
class ControlSettingScreen():
"""Contains UI elements.

Expand All @@ -58,6 +58,7 @@ def __init__(self, screen):
"-", #aim y input
"-", #aim -y input
"No", #aim with mouse
"No", #aim with r
"No", #move with hat
"No", #aim with hat
"No"] #use default control
Expand Down Expand Up @@ -284,6 +285,7 @@ def update_input_layout(self, actions_map,
self.textList[action] = "Axis: {}, Gamepad: {}".format(control.axis, control.joy)
if use_mouse_to_aim_and_fire:
self.textList[SelectedUI.AIM_WITH_MOUSE] = "Yes"
self.textList[SelectedUI.AIM_WITH_R] = "Yes"
else:
self.textList[SelectedUI.AIM_WITH_MOUSE] = "No"
if use_hat_to_aim > -1:
Expand Down Expand Up @@ -322,7 +324,9 @@ def print_input_layout(self):
self.screen.blit(text, [647, 113])
text = self.font_small.render(self.textList[SelectedUI.AIM_WITH_HAT], True, RED)
self.screen.blit(text, [647, 213])
text = self.font_small.render(self.textList[SelectedUI.AIM_WITH_MOUSE], True, RED)
text = self.font_small.render(self.textList[SelectedUI.AIM_WITH_MOUSE], True, RED)
self.screen.blit(text, [647, 213])
text = self.font_small.render(self.textList[SelectedUI.AIM_WITH_R], True, RED)
self.screen.blit(text, [647, 313])
text = self.font_small.render(self.textList[SelectedUI.USE_DEFAULT_CONTROLS], True, RED)
self.screen.blit(text, [647, 413])
Expand Down
15 changes: 14 additions & 1 deletion src/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
BLACK = ( 0, 0, 0)
WHITE = ( 255, 255, 255)

buttonCount=0;
def equal_input_source(input1, input2):
#Keyboard key:
#KEYDOWN == KEYUP, same key_index --> same key toggled
Expand Down Expand Up @@ -128,9 +129,16 @@ def notify(self, event):
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN: # K_RETURN is the enter key
self.event_manager.post(events.TogglePauseEvent())
elif event.key == pygame.K_BACKSPACE:
if event.key == pygame.K_BACKSPACE:
reset_ev = events.ResetWorld()
self.event_manager.post(reset_ev)
# aysenur
if event.key == pygame.K_r:
reset_ev = events.ResetWorld()
self.event_manager.post(reset_ev)
if event.key == pygame.K_q:
quit_ev = events.QuitEvent()
self.event_manager.post(quit_ev)
# Handle events generated by mouse
if self.use_mouse_to_aim_and_fire:
if event.type == pygame.MOUSEMOTION:
Expand All @@ -141,6 +149,11 @@ def notify(self, event):
elif event.type == pygame.MOUSEBUTTONDOWN:
attack_request_ev = events.MouseButtonDown()
self.event_manager.post(attack_request_ev)
elif event.type == pygame.K_r:
if buttonCount<10:
attack_request_ev = events.RButtonDown()
self.event_manager.post(attack_request_ev)
buttonCount=buttonCount+1;
# Handle hats
if self.use_hat_to_aim > -1:
if event.type == pygame.JOYHATMOTION:
Expand Down
Binary file added src/data/Gradient_Health_Bar.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src/data/collectibles.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading