def load_items(self): print("Loading") self.item_names = [] self.item_ids = [] for i in SETTINGS.item_types: img = pygame.image.load(os.path.join(*i['filepath'])) img = pygame.transform.scale(img, (64, 64)) self.items.append(img) self.item_ids.append(i['id']) self.item_names.append(i['type']) self.nextitemtext = TEXT.Text(self.width - 28, 165, '>', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) self.nextitem = pygame.Surface((30, 40)) self.nextitemrct = self.nextitem.get_rect() self.nextitemrct.topleft = (self.width - 40, 150) self.nextitem.fill(SETTINGS.WHITE) self.previtemtext = TEXT.Text(self.width - 135, 165, '<', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) self.previtem = pygame.Surface((30, 40)) self.previtemrct = self.previtem.get_rect() self.previtemrct.topleft = (self.width - 140, 150) self.previtem.fill(SETTINGS.WHITE) self.itemtypetext = TEXT.Text(self.width - 140, 110, 'ITEM TYPE', SETTINGS.WHITE, 'DUGAFONT.ttf', 20) self.itemrect = self.items[current_item].get_rect() self.itemrect.topleft = (self.width - 107, 110)
def __init__(self, settings): Menu.__init__(self, 'NEW GAME') self.new_button = Button( (SETTINGS.canvas_actual_width / 2, 200, 200, 60), "NEW GAME") self.custom_button = Button( (SETTINGS.canvas_actual_width / 2, 270, 200, 60), "CUSTOM MAPS") self.tutorial_button = Button( (SETTINGS.canvas_actual_width / 2, 325, 200, 30), "TUTORIAL") self.back_button = Button( (SETTINGS.canvas_actual_width / 2, 500, 200, 60), "BACK") self.loading = TEXT.Text(0, 0, "LOADING...", SETTINGS.BLACK, "DUGAFONT.ttf", 74) self.loading.update_pos((SETTINGS.canvas_actual_width / 2) - (self.loading.layout.get_width() / 2) + 8, (SETTINGS.canvas_target_height / 2) - (self.loading.layout.get_height() / 2)) self.nolevels = TEXT.Text(0, 0, "NO CUSTOM LEVELS", SETTINGS.RED, "DUGAFONT.ttf", 50) self.nolevels.update_pos((SETTINGS.canvas_actual_width / 2) - (self.nolevels.layout.get_width() / 2) + 8, (SETTINGS.canvas_target_height / 2) - (self.nolevels.layout.get_height() / 2)) self.timer = 0 self.no_levels_on = False self.settings = settings
def __init__(self): Menu.__init__(self, 'CREDITS') self.back_button = Button( (SETTINGS.canvas_actual_width / 2, 500, 200, 60), "BACK") #Created by self.createdby = TEXT.Text(0, 0, 'CREATED BY', SETTINGS.LIGHTGRAY, "DUGAFONT.ttf", 24) self.createdby.update_pos((SETTINGS.canvas_actual_width / 2) - (self.createdby.layout.get_width() / 2) + 8, 130) self.maxwellsalmon = TEXT.Text(0, 0, 'TALISMAN', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 38) self.maxwellsalmon.update_pos( (SETTINGS.canvas_actual_width / 2) - (self.maxwellsalmon.layout.get_width() / 2) + 8, 160) #Music self.musicby = TEXT.Text(0, 0, 'MUSIC BY', SETTINGS.LIGHTGRAY, "DUGAFONT.ttf", 20) self.musicby.update_pos((SETTINGS.canvas_actual_width / 2) - (self.musicby.layout.get_width() / 2) + 8, 210) self.eli = TEXT.Text(0, 0, 'HUD-LUM @ SOUNDCLOUD', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 30) self.eli.update_pos((SETTINGS.canvas_actual_width / 2) - (self.eli.layout.get_width() / 2) + 8, 240) #Maps self.contributions = TEXT.Text(0, 0, 'THANKS TO', SETTINGS.LIGHTGRAY, "DUGAFONT.ttf", 20) self.contributions.update_pos( (SETTINGS.canvas_actual_width / 2) - (self.contributions.layout.get_width() / 2) + 8, 290) self.contributors = TEXT.Text( 0, 0, 'POELE, OLE, ROCKETTHEMINIFIG, ANDY BOY, J4CKINS', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 20) self.contributors.update_pos( (SETTINGS.canvas_actual_width / 2) - (self.contributors.layout.get_width() / 2) + 8, 320) self.contributors2 = TEXT.Text(0, 0, 'THEFATHOBBITS, STARLITEPONY', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 20) self.contributors2.update_pos( (SETTINGS.canvas_actual_width / 2) - (self.contributors2.layout.get_width() / 2) + 8, 345) self.specialthanks = TEXT.Text( 0, 0, 'THANKS TO THE PYGAME COMMUNITY FOR HELP AND MOTIVATION', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 15) self.specialthanks.update_pos( (SETTINGS.canvas_actual_width / 2) - (self.specialthanks.layout.get_width() / 2) + 8, 380) self.and_you = TEXT.Text(0, 0, 'THANKS TO YOU FOR PLAYING!', SETTINGS.GREEN, "DUGAFONT.ttf", 22) self.and_you.update_pos((SETTINGS.canvas_actual_width / 2) - (self.and_you.layout.get_width() / 2) + 8, 410)
def __init__(self): self.health = SETTINGS.player_health self.armor = SETTINGS.player_armor self.ammo = 0 self.sprite = pygame.image.load(os.path.join('graphics', 'hud.png')).convert() self.sprite = pygame.transform.scale( self.sprite, (SETTINGS.canvas_actual_width, SETTINGS.window_height - SETTINGS.canvas_target_height)) self.rect = self.sprite.get_rect() self.rect.topleft = (0, SETTINGS.canvas_target_height) self.text = [ TEXT.Text(int(self.rect.width / 35), self.rect.y + int(self.rect.height / 2.5), 'PLAYER ARMOR', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 35), TEXT.Text(int(self.rect.width / 3.4), self.rect.y + int(self.rect.height / 2.5), 'PLAYER HEALTH', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 35), TEXT.Text(int(self.rect.width / 1.8), self.rect.y + int(self.rect.height / 2.5), 'AMMUNITION', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 35) ] self.arrow_spritesheet = pygame.image.load( os.path.join('graphics', 'arrows.png')).convert_alpha() self.arrow = self.arrow_spritesheet.subsurface(0, 0, 17, 17).convert_alpha() self.arrow = pygame.transform.scale(self.arrow, (50, 50)) self.original_arrow = self.arrow self.arrow_rect = self.arrow.get_rect() self.arrow_rect.center = (self.rect.topright[0] - 46, self.rect.topright[1] + 66) self.arrow_center = (self.arrow_rect.centerx - self.arrow_rect.width / 2, self.arrow_rect.centery - self.arrow_rect.height / 2) self.arrow2 = self.arrow_spritesheet.subsurface(0, 17, 17, 17).convert_alpha() self.arrow2 = pygame.transform.scale(self.arrow2, (50, 50)) self.original_arrow2 = self.arrow2 self.arrow3 = self.arrow_spritesheet.subsurface(0, 34, 17, 17).convert_alpha() self.arrow3 = pygame.transform.scale(self.arrow3, (50, 50)) self.original_arrow3 = self.arrow3
def __init__(self, title): self.title = TEXT.Text(0, 0, title, SETTINGS.BLACK, "DUGAFONT.ttf", 120) self.title.update_pos((SETTINGS.canvas_actual_width / 2) - (self.title.layout.get_width() / 2) + 8, 20) self.background_image = None
def __init__(self): self.area = pygame.Surface((200, 300)).convert() self.rect = self.area.get_rect() self.rect.topleft = SETTINGS.canvas_actual_width - 220, SETTINGS.canvas_target_height - 280 self.area.fill((200, 200, 200)) self.title = TEXT.Text(0, 0, 'THANKS FOR PLAYING', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 19) self.title.update_pos( (self.rect.width / 2) - (self.title.layout.get_width() / 2) + 2, 5) self.pleas = [ 'You have been playing PyGame', 'for over two hours now. I', 'really hope you enjoy it.', 'If you do, please consider', 'buying it. If you have al-', 'ready bought it, thank you', 'very much! If you don\'t think', 'it is worth money, please let', 'me know what to improve.', 'Well, I\'m happy to have you', 'playing, so I added you to', 'the credits!' ] self.texts = [] self.pos = 30 self.button = Button((SETTINGS.canvas_actual_width - 120, SETTINGS.canvas_target_height - 15, 192, 40), "LEAVE ME ALONE!") for i in range(len(self.pleas)): self.texts.append( TEXT.Text(0, 0, self.pleas[i], SETTINGS.WHITE, "DUGAFONT.ttf", 15)) self.texts[i].update_pos( (self.rect.width / 2) - (self.texts[i].layout.get_width() / 2) + 2, self.pos) self.pos += 17
def __init__(self, xywh, text): #ADD CLICK SOUND self.surface = pygame.Surface((xywh[2], xywh[3])) self.rect = self.surface.get_rect() self.rect.center = (xywh[0], xywh[1]) self.clicked = False self.text = TEXT.Text(0, 0, text, SETTINGS.WHITE, "DUGAFONT.ttf", 24) self.text.update_pos(xywh[0] - self.text.layout.get_width() / 2, xywh[1] - (self.text.layout.get_height() / 2) + 2) self.filling = SETTINGS.LIGHTGRAY self.sound = pygame.mixer.Sound( os.path.join('sounds', 'other', 'button.ogg'))
def __init__(self, sprite): self.health = SETTINGS.player_health self.armor = SETTINGS.player_armor self.ammo = 0 self.sprite = pygame.image.load(sprite).convert() self.sprite = pygame.transform.scale( self.sprite, (SETTINGS.canvas_actual_width, SETTINGS.window_height - SETTINGS.canvas_target_height)) self.rect = self.sprite.get_rect() self.rect.topleft = (0, SETTINGS.canvas_target_height) self.text = [ TEXT.Text(int(self.rect.width / 35), self.rect.y + int(self.rect.height / 2.5), 'PLAYER ARMOR', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 35), TEXT.Text(int(self.rect.width / 3.4), self.rect.y + int(self.rect.height / 2.5), 'PLAYER HEALTH', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 35), TEXT.Text(int(self.rect.width / 1.8), self.rect.y + int(self.rect.height / 2.5), 'AMMUNITION', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 35) ]
def load_npcs(self): global current_npc, npc_face self.npc_stats = [] self.npc_textures = [] for i in SETTINGS.npc_types: self.npc_stats.append(i) img = pygame.image.load(os.path.join(*i['filepath'])) img2 = img.subsurface(0, 0, 64, 128).convert_alpha() img2 = pygame.transform.scale(img2, (64, 64)) self.npc_textures.append(img2) self.npcrect = self.npc_textures[current_npc].get_rect() self.npcrect.topleft = (self.width - 107, 210) self.npctypetext = TEXT.Text(self.width - 140, 195, self.npc_stats[current_npc]['name'], SETTINGS.WHITE, 'DUGAFONT.ttf', 20) self.nextnpctext = TEXT.Text(self.width - 28, 235, '>', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) self.nextnpc = pygame.Surface((30, 40)) self.nextnpcrct = self.nextnpc.get_rect() self.nextnpcrct.topleft = (self.width - 40, 230) self.nextnpc.fill(SETTINGS.WHITE) self.prevnpctext = TEXT.Text(self.width - 135, 235, '<', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) self.prevnpc = pygame.Surface((30, 40)) self.prevnpcrct = self.prevnpc.get_rect() self.prevnpcrct.topleft = (self.width - 135, 230) self.prevnpc.fill(SETTINGS.WHITE) #face self.npcfacetext = TEXT.Text(self.width - 100, 290, str(npc_face), SETTINGS.WHITE, 'DUGAFONT.ttf', 24) self.npcfrect = pygame.Rect(self.width - 100, 280, 64, 64) self.nextnpcftext = TEXT.Text(self.width - 28, 295, '>', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) self.nextnpcf = pygame.Surface((30, 40)) self.nextnpcfrct = self.nextnpcf.get_rect() self.nextnpcfrct.topleft = (self.width - 40, 280) self.nextnpcf.fill(SETTINGS.WHITE) self.prevnpcftext = TEXT.Text(self.width - 135, 295, '<', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) self.prevnpcf = pygame.Surface((30, 40)) self.prevnpcfrct = self.prevnpcf.get_rect() self.prevnpcfrct.topleft = (self.width - 135, 280) self.prevnpcf.fill(SETTINGS.WHITE)
def update_strings(self): self.graphics_button = Button( (SETTINGS.canvas_actual_width / 2, 150, 300, 30), "GRAPHICS: %s" % self.strings[self.graphics_index]) self.fov_button = Button( (SETTINGS.canvas_actual_width / 2, 200, 300, 30), "FOV: %s" % self.degrees[self.fov_index]) self.sensitivity_button = Button( (SETTINGS.canvas_actual_width / 2, 250, 300, 30), "SENSITIVITY: %s" % self.strings[self.sens_index]) self.volume_button = Button( (SETTINGS.canvas_actual_width / 2, 300, 300, 30), "MASTER VOLUME: %s" % self.strings[self.vol_index]) self.music_button = Button( (SETTINGS.canvas_actual_width / 2, 350, 300, 30), "MUSIC VOLUME: %s" % self.music_strings[self.music_index]) self.fullscreen_button = Button( (SETTINGS.canvas_actual_width / 2, 400, 300, 30), "FULLSCREEN: %s" % self.onoff[self.fs_index]) self.back_button = Button( (SETTINGS.canvas_actual_width / 2, 500, 200, 60), "BACK") self.restart = TEXT.Text(0, 0, 'RESTART GAME TO APPLY CHANGES', SETTINGS.LIGHTGRAY, "DUGAFONT.ttf", 20) self.restart.update_pos((SETTINGS.canvas_actual_width / 2) - (self.restart.layout.get_width() / 2), 580) self.current_settings = { 'graphics': self.strings_to_data['graphics'][self.graphics_index], 'fov': self.strings_to_data['fov'][self.fov_index], 'sensitivity': self.strings_to_data['sensitivity'][self.sens_index], 'volume': self.strings_to_data['volume'][self.vol_index], 'music volume': self.strings_to_data['music volume'][self.music_index], 'fullscreen': self.strings_to_data['fullscreen'][self.fs_index], } self.save = True
def __init__(self): self.health = SETTINGS.player_health self.armor = SETTINGS.player_armor self.ammo = 0 self.scale_width = 0 self.scale_height = 0 self.sprite = pygame.image.load(os.path.join('graphics', 'hud.png')).convert() if SETTINGS.original_aspect: self.sprite = pygame.transform.scale( self.sprite, (SETTINGS.canvas_actual_width, SETTINGS.window_height - SETTINGS.canvas_target_height)) self.rect = self.sprite.get_rect() else: self.rect = self.sprite.get_rect() # get the unscaled dimensions for figuring out the scale of the transform once done self.scale_width = self.rect.width self.scale_height = self.rect.height self.sprite = pygame.transform.scale( self.sprite, (SETTINGS.canvas_target_width, int(self.rect.height * SETTINGS.canvas_aspect_ratio))) self.rect = self.sprite.get_rect() self.scale_width = self.rect.width / self.scale_width self.scale_height = self.rect.height / self.scale_height # use relative postioning to set the actual playable area SETTINGS.canvas_game_area_height = SETTINGS.canvas_target_height - self.rect.height self.rect.topleft = (0, SETTINGS.canvas_game_area_height) self.text = [ TEXT.Text(int(self.rect.width / 35), self.rect.y + int(self.rect.height / 2.5), 'PLAYER ARMOR', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 35), TEXT.Text(int(self.rect.width / 3.4), self.rect.y + int(self.rect.height / 2.5), 'PLAYER HEALTH', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 35), TEXT.Text(int(self.rect.width / 1.8), self.rect.y + int(self.rect.height / 2.5), 'AMMUNITION', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 35) ] self.arrow_spritesheet = pygame.image.load( os.path.join('graphics', 'arrows.png')).convert_alpha() self.arrow = self.arrow_spritesheet.subsurface(0, 0, 17, 17).convert_alpha() self.arrow = pygame.transform.scale(self.arrow, (50, 50)) self.original_arrow = self.arrow self.arrow_rect = self.arrow.get_rect() if SETTINGS.original_aspect: self.arrow_rect.center = (self.rect.topright[0] - 46, self.rect.topright[1] + 66) else: self.arrow_rect.center = (self.rect.topright[0] - math.ceil(46 * self.scale_width), self.rect.topright[1] + math.ceil(66 * self.scale_height)) self.arrow_center = (self.arrow_rect.centerx - self.arrow_rect.width / 2, self.arrow_rect.centery - self.arrow_rect.height / 2) self.arrow2 = self.arrow_spritesheet.subsurface(0, 17, 17, 17).convert_alpha() self.arrow2 = pygame.transform.scale(self.arrow2, (50, 50)) self.original_arrow2 = self.arrow2 self.arrow3 = self.arrow_spritesheet.subsurface(0, 34, 17, 17).convert_alpha() self.arrow3 = pygame.transform.scale(self.arrow3, (50, 50)) self.original_arrow3 = self.arrow3
import pygame import SETTINGS import ITEMS import TEXT import random title = TEXT.Text(0, 0, "None :-)", SETTINGS.BLACK, "DUGAFONT.ttf", 60) author = TEXT.Text(0, 0, "None :-)", SETTINGS.BLACK, "DUGAFONT.ttf", 40) hurt_intensity = 128 dead_intensity = 0 heal_intensity = 85 armor_intensity = 85 fade_value = 0 title_timer = 0 int_to_string = { 0: 'FIRST', 1: 'SECOND', 2: 'THIRD', 3: 'FOURTH', 4: 'FIFTH', 5: 'SIXTH', 6: 'SEVENTH', 7: 'EIGHTH', 8: 'NINTH', 9: 'TENTH', 10: 'ELEVENTH', 11: 'TWELVTH', 12: 'THIRTEENTH', 13: 'FOURTEENTH',
def __init__(self, width, height): global mode, ltype, segtypes self.width = max(width, 438) self.height = max(height, 438) self.canvas = pygame.display.set_mode((self.width, self.height)) self.segtype = 0 pygame.display.set_caption("DUGA Map Editor") self.stop = False self.items = [] self.showauthor = False self.tile_textures = [] for i in range(len(TEXTURES.all_textures)): texture = TEXTURES.all_textures[i] t = pygame.image.load(texture).convert_alpha() t = pygame.transform.scale(t, (64, 64)) if SETTINGS.texture_type[i] == 'vdoor': t = pygame.transform.rotate(t, 90) self.tile_textures.append(t) #Author self.authortext = TEXT.Text(self.width - 135, 5, 'Author: %s', SETTINGS.LIGHTGRAY, 'DUGAFONT.ttf', 11) #Export self.exporttext = TEXT.Text(20, self.height - 32, 'EXPORT', SETTINGS.BLACK, 'DUGAFONT.ttf', 14) self.exportbtn = pygame.Surface((64, 32)) self.exportrct = self.exportbtn.get_rect() self.exportrct.topleft = (15, self.height - 40) self.exportbtn.fill(SETTINGS.WHITE) #Selected mode self.selecttext = TEXT.Text(100, self.height - 32, mode, SETTINGS.GREEN, 'DUGAFONT.ttf', 24) #Tile self.nxttext = TEXT.Text(self.width - 28, 60, '>', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) self.nexttile = pygame.Surface((30, 40)) self.nexttilerct = self.nexttile.get_rect() self.nexttilerct.topleft = (self.width - 40, 50) self.nexttile.fill(SETTINGS.WHITE) self.prvtext = TEXT.Text(self.width - 135, 60, '<', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) self.prevtile = pygame.Surface((30, 40)) self.prevtilerct = self.prevtile.get_rect() self.prevtilerct.topleft = (self.width - 140, 50) self.prevtile.fill(SETTINGS.WHITE) self.tiletypetext = TEXT.Text(self.width - 95, 15, 'TEXTURE TYPE', SETTINGS.WHITE, 'DUGAFONT.ttf', 20) self.tilerect = self.tile_textures[current_id].get_rect() self.tilerect.topleft = (self.width - 107, 40) #startpos self.startpossurf = pygame.Surface((64, 64)) self.startposrct = self.startpossurf.get_rect() self.startposrct.topleft = (self.width - 105, 335) self.startpossurf.fill(SETTINGS.DARKRED) self.startpostxt = TEXT.Text(self.width - 95, 345, 'START', SETTINGS.WHITE, 'DUGAFONT.ttf', 15) self.startpostxt2 = TEXT.Text(self.width - 95, 370, 'POS', SETTINGS.WHITE, 'DUGAFONT.ttf', 15) #Segment? if ltype == "segment": #Doors self.doortxt = TEXT.Text(30, self.height - 110, 'ENTRANCES', SETTINGS.BLUE, 'DUGAFONT.ttf', 20) #up self.doorup = pygame.Surface((20, 20)) self.dooruprct = self.doorup.get_rect() self.dooruprct.topleft = (30, self.height - 80) self.doorup.fill(SETTINGS.WHITE) self.dooruptxt = TEXT.Text(36, self.height - 76, '^', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) #down self.doordown = pygame.Surface((20, 20)) self.doordownrct = self.doordown.get_rect() self.doordownrct.topleft = (55, self.height - 80) self.doordown.fill(SETTINGS.WHITE) self.doordowntxt = TEXT.Text(60, self.height - 80, 'v', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) #left self.doorleft = pygame.Surface((20, 20)) self.doorleftrct = self.doorleft.get_rect() self.doorleftrct.topleft = (80, self.height - 80) self.doorleft.fill(SETTINGS.WHITE) self.doorlefttxt = TEXT.Text(85, self.height - 80, '<', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) #right self.doorright = pygame.Surface((20, 20)) self.doorrightrct = self.doorright.get_rect() self.doorrightrct.topleft = (105, self.height - 80) self.doorright.fill(SETTINGS.WHITE) self.doorrighttxt = TEXT.Text(110, self.height - 80, '>', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) #typeleft self.segtypeleft = pygame.Surface((20, 20)) self.segtypeleftrct = self.segtypeleft.get_rect() self.segtypeleftrct.topleft = (20, self.height - 140) self.segtypeleft.fill(SETTINGS.WHITE) self.segtypelefttxt = TEXT.Text(25, self.height - 140, '<', SETTINGS.BLACK, 'DUGAFONT.ttf', 20) #segtype self.segtypetxt = TEXT.Text(20, self.height - 160, 'SEGMENT TYPE', SETTINGS.DARKGREEN, 'DUGAFONT.ttf', 20) self.csegtypetxt = TEXT.Text(45, self.height - 140, segtypes[self.segtype], SETTINGS.LIGHTGREEN, 'DUGAFONT.ttf', 20) #typeright self.segtyperight = pygame.Surface((20, 20)) self.segtyperightrct = self.segtypeleft.get_rect() self.segtyperightrct.topleft = (130, self.height - 140) self.segtyperight.fill(SETTINGS.WHITE) self.segtyperighttxt = TEXT.Text(135, self.height - 140, '>', SETTINGS.BLACK, 'DUGAFONT.ttf', 20)
def __init__(self): self.text = TEXT.Text(0, 0, "INTET!", SETTINGS.BLACK, "DUGAFONT.ttf", 26) #Strings self.welcome = { 'string': "WELCOME TO META! PRESS 'E' TO OPEN THE DOOR", 'tiles': [[1, 11], [1, 10], [2, 10], [2, 11], [2, 12], [3, 10], [3, 11], [3, 12], [4, 10], [4, 11], [4, 12], [5, 11]] } self.items1 = { 'string': "PICK UP THE ARMOR AND HEALTH ON THE GROUND", 'tiles': [ [2, 6], [3, 6], [4, 6], [2, 7], [3, 7], [4, 7], ] } self.arrow = { 'string': "FOLLOW THE GREEN ARROW IN THE LOWER CORNER", 'tiles': [[2, 5], [3, 5], [4, 5]] } self.exits = { 'string': "PRESS 'E' ON THE EXIT TO FINISH THE FIRST TUTORIAL", 'tiles': [ [2, 1], [3, 1], [4, 1], [2, 2], [3, 2], [4, 2], ] } self.second = { 'string': "META HAS PRIMARY, SECONDARY AND MELEE WEPONS", 'tiles': [[2, 17], [3, 16], [3, 17], [3, 18], [4, 16], [4, 17]] } self.weapons = { 'string': "PICK UP THE WEAPONS AND SWITCH WITH '1, 2, 3'", 'tiles': [[2, 12], [3, 12], [4, 12], [1, 13], [2, 13], [3, 13], [4, 13], [5, 13], [1, 14], [2, 14], [3, 14], [4, 14], [5, 14]] } self.ammo = { 'string': "EACH GUN HAS A TYPE OF AMMO. RELOAD WITH 'R'", 'tiles': [[2, 7], [3, 7], [4, 7], [2, 8], [3, 8], [4, 8], [2, 9], [3, 9], [4, 9]] } self.compare = { 'string': "FOR BETTER AIM, RIGHT CLICK. GO STAND ON THE GUN", 'tiles': [[2, 3], [4, 3], [2, 4], [3, 4], [4, 4], [2, 5], [3, 5], [4, 5]] } self.gauss = { 'string': "OPEN INVENTORY WITH 'I' AND CLICK ON GROUND SLOT", 'tiles': [[3, 3]] } self.combat = { 'string': "TIME FOR SOME COMBAT!", 'tiles': [ [2, 14], [3, 14], [2, 15], [3, 15], [4, 15], [2, 16], [3, 16], [4, 16], ] } self.items = { 'string': "ENEMIES HAVE DIFFERENT BEHAVIOURS. NOW, GEAR UP!", 'tiles': [ [2, 10], [3, 10], [4, 10], [2, 11], [3, 11], [4, 11], [2, 12], [3, 12], [4, 12], ] } self.enemy = { 'string': "KILL HIM!! LEFT CLICK TO SHOOT!", 'tiles': [ [2, 4], [3, 4], [4, 4], [5, 4], [1, 5], [2, 5], [3, 5], [4, 5], [5, 5], [1, 6], [2, 6], [3, 6], [4, 6], [5, 6], [1, 7], [2, 7], [3, 7], [4, 7], [5, 7], [1, 8], [2, 8], [3, 8], [4, 8], [5, 8], ] } self.done = { 'string': "WELL DONE! NOW, LET'S PLAY!", 'tiles': [ [2, 1], [3, 1], [4, 4], [3, 2], [4, 2], ] }
def __init__(self, ammo_dict): self.bg = pygame.image.load(os.path.join('graphics', 'inventory.png')).convert_alpha() self.rect = self.bg.get_rect() self.rect.center = (int(SETTINGS.canvas_actual_width/2), int(SETTINGS.canvas_target_height/2)) self.held_ammo = {} for x in ammo_dict: self.held_ammo[x] = 0 SETTINGS.held_ammo = self.held_ammo SETTINGS.max_ammo = ammo_dict #Menu self.menu = pygame.Surface((160, 200)).convert() self.menu_rect = self.menu.get_rect() self.menudraw = False self.selected = None self.submenus = [] self.submenu_rects = [] for i in range(0, 9): if i == 0 or i == 8: self.submenus.append(self.menu.subsurface(0, 0, self.menu_rect.width, 30).convert()) self.submenu_rects.append(self.submenus[i].get_rect()) else: self.submenus.append(self.menu.subsurface(0, 0, self.menu_rect.width, 20).convert()) self.submenu_rects.append(self.submenus[i].get_rect()) if i % 2 == 0: self.submenus[i].fill((65,65,65)) else: self.submenus[i].fill((55,55,55)) #Close button self.closebtn = pygame.Surface((176, 64)).convert_alpha() self.closebtn_rect = self.closebtn.get_rect() self.closebtn_rect.topleft = (self.rect.x + 353, self.rect.y + 353) self.closebtn.fill((100,100,100,100)) #Primary weapon self.primaryslot = pygame.Surface((272, 80)).convert_alpha() self.primaryslot_rect = self.primaryslot.get_rect() self.primaryslot_rect.topleft = (self.rect.x + 33, self.rect.y + 33) self.primaryslot.fill((100,100,100,100)) #Secondary weapon self.secondslot = pygame.Surface((176, 81)).convert_alpha() self.secondslot_rect = self.secondslot.get_rect() self.secondslot_rect.topleft = (self.rect.x + 33, self.rect.y + 129) self.secondslot.fill((100,100,100,100)) #Melee weapon self.meleeslot = pygame.Surface((176, 81)).convert_alpha() self.meleeslot_rect = self.meleeslot.get_rect() self.meleeslot_rect.topleft = (self.rect.x + 33, self.rect.y + 225) self.meleeslot.fill((100,100,100,100)) #Ammo textures self.ammotexture1 = pygame.image.load(os.path.join(*[x for x in SETTINGS.item_types if x['type'] == 'bullet'][0]['filepath'])).subsurface(0,112,64,16).convert_alpha() self.ammotexture2 = pygame.image.load(os.path.join(*[x for x in SETTINGS.item_types if x['type'] == 'shell'][0]['filepath'])).subsurface(0,112,64,16).convert_alpha() self.ammotexture3 = pygame.image.load(os.path.join(*[x for x in SETTINGS.item_types if x['type'] == 'ferromag'][0]['filepath'])).subsurface(0,112,64,16).convert_alpha() self.ammotexture1 = pygame.transform.scale(self.ammotexture1, (128, 32)) self.ammotexture2 = pygame.transform.scale(self.ammotexture2, (128, 32)) self.ammotexture3 = pygame.transform.scale(self.ammotexture3, (128, 32)) #Ammo 1 self.ammoslot1 = pygame.Surface((191,79)).convert_alpha() self.ammoslot1_rect = self.ammoslot1.get_rect() self.ammoslot1_rect.topleft = (self.rect.x + 320, self.rect.y + 33) self.ammoslot1.fill((100,100,100,100)) #Ammo 2 self.ammoslot2 = pygame.Surface((191,79)).convert_alpha() self.ammoslot2_rect = self.ammoslot2.get_rect() self.ammoslot2_rect.topleft = (self.rect.x + 320, self.rect.y + 129) self.ammoslot2.fill((100,100,100,100)) #Ammo 3 self.ammoslot3 = pygame.Surface((191,79)).convert_alpha() self.ammoslot3_rect = self.ammoslot3.get_rect() self.ammoslot3_rect.topleft = (self.rect.x + 320, self.rect.y + 225) self.ammoslot3.fill((100,100,100,100)) #Ground weapon self.groundslot = pygame.Surface((272, 80)).convert_alpha() self.groundslot_rect = self.groundslot.get_rect() self.groundslot_rect.topleft = (self.rect.x + 33, self.rect.y + 336) self.groundslot.fill((100,100,100,75)) #Stuff self.mousepos = pygame.mouse.get_pos() self.timer = 0 self.closing = False self.text = [TEXT.Text(0, 0, 'NAME', SETTINGS.WHITE, 'DUGAFONT.ttf', 18), TEXT.Text(0, 0, 'DAMAGE: --', SETTINGS.LIGHTGRAY, 'DUGAFONT.ttf', 15), TEXT.Text(0, 0, 'SPREAD: --', SETTINGS.LIGHTGRAY, 'DUGAFONT.ttf', 15), TEXT.Text(0, 0, 'ACCURACY: --', SETTINGS.LIGHTGRAY, 'DUGAFONT.ttf', 15), TEXT.Text(0, 0, 'RANGE: --', SETTINGS.LIGHTGRAY, 'DUGAFONT.ttf', 15), TEXT.Text(0, 0, 'MAGAZINE SIZE: --', SETTINGS.LIGHTGRAY, 'DUGAFONT.ttf', 15), TEXT.Text(0, 0, 'RELOAD TIME: --', SETTINGS.LIGHTGRAY, 'DUGAFONT.ttf', 15), TEXT.Text(0, 0, 'AMMO TYPE: --', SETTINGS.LIGHTGRAY, 'DUGAFONT.ttf', 15), TEXT.Text(0, 0, 'DROP', SETTINGS.WHITE, 'DUGAFONT.ttf', 18)] self.ammotext = [TEXT.Text(480, 116, '-- / --', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 24), TEXT.Text(480, 212, '-- / --', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 24), TEXT.Text(480, 308, '-- / --', SETTINGS.DARKGRAY, 'DUGAFONT.ttf', 24)]
#Probably temporary object init #SETTINGS.current_level = 5 #temporary if __name__ == '__main__': gameLoad = Load() gameLoad.load_resources() gameLoad.load_entities() mapGenerator = GENERATION.Generator() mapGenerator.generate_levels(5, 4) gameLoad.get_canvas_size() #Setup and classes thanks = TEXT.Text(150, 250, "THANKS FOR PLAYING DUGA TECH DEMO", SETTINGS.WHITE, "DUGAFONT.ttf", 24) #Classes for later use gameMap = MAP.Map(SETTINGS.levels_list[SETTINGS.current_level].array) gameCanvas = Canvas(SETTINGS.canvas_map_width, SETTINGS.canvas_map_height) gamePlayer = PLAYER.Player(SETTINGS.player_pos) gameRaycast = RAYCAST.Raycast(gameCanvas.canvas, gameCanvas.window) gameInv = INVENTORY.inventory({'bullet': 150, 'shell': 25, 'ferromag': 50}) gameHUD = HUD.hud(path.join('graphics', 'hud.png')) #More loading - Level specific gameLoad.load_new_level() #Run at last main_loop()
def __init__(self): Menu.__init__(self, 'CREDITS') self.back_button = Button( (SETTINGS.canvas_actual_width / 2, 500, 200, 60), "BACK") #Created by self.createdby = TEXT.Text(0, 0, 'CREATED BY', SETTINGS.LIGHTGRAY, "DUGAFONT.ttf", 24) self.createdby.update_pos((SETTINGS.canvas_actual_width / 2) - (self.createdby.layout.get_width() / 2) + 8, 130) self.maxwellsalmon = TEXT.Text(0, 0, 'HakermanOfficial', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 38) self.maxwellsalmon.update_pos( (SETTINGS.canvas_actual_width / 2) - (self.maxwellsalmon.layout.get_width() / 2) + 8, 160) #Music self.musicby = TEXT.Text(0, 0, 'MUSIC BY', SETTINGS.LIGHTGRAY, "DUGAFONT.ttf", 20) self.musicby.update_pos((SETTINGS.canvas_actual_width / 2) - (self.musicby.layout.get_width() / 2) + 8, 210) self.eli = TEXT.Text(0, 0, 'HUD-LUM @ SOUNDCLOUD', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 30) self.eli.update_pos((SETTINGS.canvas_actual_width / 2) - (self.eli.layout.get_width() / 2) + 8, 240) #Maps self.contributions = TEXT.Text(0, 0, 'THANKS TO', SETTINGS.LIGHTGRAY, "DUGAFONT.ttf", 20) self.contributions.update_pos( (SETTINGS.canvas_actual_width / 2) - (self.contributions.layout.get_width() / 2) + 8, 290) self.contributors = TEXT.Text( 0, 0, 'POELE, OLE, ROCKETTHEMINIFIG, ANDY BOY, J4CKINS', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 20) self.contributors.update_pos( (SETTINGS.canvas_actual_width / 2) - (self.contributors.layout.get_width() / 2) + 8, 320) self.contributors2 = TEXT.Text(0, 0, 'THEFATHOBBITS, STARLITEPONY', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 20) self.contributors2.update_pos( (SETTINGS.canvas_actual_width / 2) - (self.contributors2.layout.get_width() / 2) + 8, 345) self.specialthanks = TEXT.Text( 0, 0, 'THANKS TO THE PYGAME COMMUNITY FOR HELP AND NEVER GIVING THIS UP', SETTINGS.DARKGRAY, "DUGAFONT.ttf", 15) self.specialthanks.update_pos( (SETTINGS.canvas_actual_width / 2) - (self.specialthanks.layout.get_width() / 2) + 8, 380) self.and_you = TEXT.Text( 0, 0, 'SPECIAL THANKS TO MAXWELLSALMON FOR HELPING WITH ALL THE TEXTURES AND ANIMATIONS!', SETTINGS.RED, "DUGAFONT.ttf", 15) self.and_you.update_pos((SETTINGS.canvas_actual_width / 3) - (self.and_you.layout.get_width() / 3) + 8, 410)
def __init__(self): Menu.__init__(self, 'STATISTICS') self.area = pygame.Surface((600, 300)) self.area_rect = self.area.get_rect() self.area_rect.center = (SETTINGS.canvas_actual_width / 2, SETTINGS.canvas_target_height / 2) self.area.fill((200, 200, 200)) self.middle_area = pygame.Surface((200, 300)) self.middle_area.fill((180, 180, 180)) self.back_button = Button( (SETTINGS.canvas_actual_width / 2, 500, 200, 60), "BACK") self.score_testing = copy.copy(SETTINGS.statistics) self.highlights = [] for i in range(6): if i == 0: self.highlights.append( pygame.Surface((600, 35)).convert_alpha()) else: self.highlights.append( pygame.Surface((600, 30)).convert_alpha()) self.highlights[i].fill((0, 0, 0, 20)) #High scores self.best_scores = [ 'HIGHEST SCORES', 'ENEMIES KILLED : %s' % SETTINGS.statistics['best enemies'], 'DAMAGE DEALT : %s' % SETTINGS.statistics['best ddealt'], 'DAMAGE TAKEN : %s' % SETTINGS.statistics['best dtaken'], 'SHOTS FIRED : %s' % SETTINGS.statistics['best shots'], 'LEVEL STREAK : %s' % SETTINGS.statistics['best levels'] ] self.texts = [] self.pos = 10 for i in range(len(self.best_scores)): if i == 0: self.texts.append( TEXT.Text(0, 0, self.best_scores[i], SETTINGS.DARKGRAY, "DUGAFONT.ttf", 18)) else: self.texts.append( TEXT.Text(0, 0, self.best_scores[i], SETTINGS.WHITE, "DUGAFONT.ttf", 18)) self.texts[i].update_pos(10, self.pos) self.pos += 30 #Last play scores self.last_scores = [ 'LAST PLAY', 'ENEMIES KILLED : %s' % SETTINGS.statistics['last enemies'], 'DAMAGE DEALT : %s' % SETTINGS.statistics['last ddealt'], 'DAMAGE TAKEN : %s' % SETTINGS.statistics['last dtaken'], 'SHOTS FIRED : %s' % SETTINGS.statistics['last shots'], 'LEVEL STREAK : %s' % SETTINGS.statistics['last levels'] ] self.last_texts = [] self.pos = 10 for i in range(len(self.last_scores)): if i == 0: self.last_texts.append( TEXT.Text(0, 0, self.last_scores[i], SETTINGS.DARKGRAY, "DUGAFONT.ttf", 18)) else: if self.last_scores[i] == self.best_scores[ i] and self.last_scores[i].find(' 0') == -1: self.last_texts.append( TEXT.Text(0, 0, self.last_scores[i], (100, 100, 200), "DUGAFONT.ttf", 18)) else: self.last_texts.append( TEXT.Text(0, 0, self.last_scores[i], SETTINGS.WHITE, "DUGAFONT.ttf", 18)) self.last_texts[i].update_pos(210, self.pos) self.pos += 30 #all time statistics #format play time self.all_scores = [ 'ALL TIME', 'ENEMIES KILLED : %s' % SETTINGS.statistics['all enemies'], 'DAMAGE DEALT : %s' % SETTINGS.statistics['all ddealt'], 'DAMAGE TAKEN : %s' % SETTINGS.statistics['all dtaken'], 'SHOTS FIRED : %s' % SETTINGS.statistics['all shots'], 'LEVEL STREAK : %s' % SETTINGS.statistics['all levels'], 'TIME PLAYED : {:02d}h {:02d}m'.format( *divmod(SETTINGS.statistics['playtime'], 60)) ] self.all_texts = [] self.pos = 10 for i in range(len(self.all_scores)): if i == 0: self.all_texts.append( TEXT.Text(0, 0, self.all_scores[i], SETTINGS.DARKGRAY, "DUGAFONT.ttf", 18)) else: self.all_texts.append( TEXT.Text(0, 0, self.all_scores[i], SETTINGS.WHITE, "DUGAFONT.ttf", 18)) self.all_texts[i].update_pos(410, self.pos) self.pos += 30
i = f.render("M", False, (0, 0, 0)) pygame.display.set_icon(i) gameLoad = Load() gameLoad.load_resources() gameLoad.load_entities() gameLoad.load_custom_levels() mapGenerator = GENERATION.Generator() mapGenerator.generate_levels(1, 2) SETTINGS.levels_list = SETTINGS.glevels_list gameLoad.get_canvas_size() #Setup and classes text = TEXT.Text(0, 0, "YOU WON", SETTINGS.WHITE, "DUGAFONT.ttf", 48) beta = TEXT.Text(5, 5, "META ALFA BUILD V.1.6", SETTINGS.WHITE, "DUGAFONT.ttf", 20) text.update_pos( SETTINGS.canvas_actual_width / 2 - text.layout.get_width() / 2, SETTINGS.canvas_target_height / 2 - text.layout.get_height() / 2) #Classes for later use gameMap = MAP.Map(SETTINGS.levels_list[SETTINGS.current_level].array) gameCanvas = Canvas(SETTINGS.canvas_map_width, SETTINGS.canvas_map_height) gamePlayer = PLAYER.Player(SETTINGS.player_pos) gameRaycast = RAYCAST.Raycast(gameCanvas.canvas, gameCanvas.window) gameInv = INVENTORY.inventory({'bullet': 150, 'shell': 25, 'ferromag': 50}) gameHUD = HUD.hud() #More loading - Level specific