1

So I have been trying to create a game with a small map that moves with the player. If the player goes to a wall, the camera also stops. No scrolling. If you want to discover an area, you go to it. And there are many obstacles. the map should be sort of the cafeteria from among us. I tried using tiled, but… It is not beginner friendly. Making a separate file is okay with me. Thanks in advance.

Full code:

'''
Imports
'''
import os
import random
import sys

import pygame import pygame_textinput from pygame.locals import *

os.chdir(os.path.dirname(os.path.abspath(file)))

''' Basic Stuff for Pygame ''' pygame.init() display_surface = pygame.display.set_mode((800, 640)) pygame.display.set_caption("AMOGUS") gameIcon = pygame.image.load('icon_of_the_game.png') pygame.display.set_icon(gameIcon)

''' Variables ''' fps =600 ai_move_speed = 2 player_changeable_name = pygame_textinput.TextInputVisualizer() clock = pygame.time.Clock() white = (255, 255, 255) WINDOWHEIGHT = 580 WINDOWWIDTH = 740

''' Game State Variable ''' menu = "menu" game = "game" ending_ani = "ending_ani"

''' Functions '''

def menu(): print("In Proggress")

def game(): print("In Proggress")

def ending_ani(): print("In Proggress")

''' Images ''' special_character = random.randint(1, 5) if special_character == 1: imposter = pygame.image.load('sus1.png') chooseable_var = random.randint(1, 4) if chooseable_var == 1: sussie1 = pygame.image.load('sus2.png') sussie2 = pygame.image.load('sus3.png') sussie3 = pygame.image.load('sus4.png') sussie4 = pygame.image.load('sus5.png')

if chooseable_var == 2:
    sussie1 = pygame.image.load('sus5.png')
    sussie2 = pygame.image.load('sus2.png')
    sussie3 = pygame.image.load('sus3.png')
    sussie4 = pygame.image.load('sus4.png')

if chooseable_var == 3:
    sussie1 = pygame.image.load('sus4.png')
    sussie2 = pygame.image.load('sus5.png')
    sussie3 = pygame.image.load('sus2.png')
    sussie4 = pygame.image.load('sus3.png')

if chooseable_var == 4:
    sussie1 = pygame.image.load('sus3.png')
    sussie2 = pygame.image.load('sus4.png')
    sussie3 = pygame.image.load('sus5.png')
    sussie4 = pygame.image.load('sus2.png')

elif special_character == 2: imposter = pygame.image.load('sus2.png') chooseable_var = random.randint(1, 4) if chooseable_var == 1: sussie1 = pygame.image.load('sus1.png') sussie2 = pygame.image.load('sus3.png') sussie3 = pygame.image.load('sus4.png') sussie4 = pygame.image.load('sus5.png')

if chooseable_var == 2:
    sussie1 = pygame.image.load('sus5.png')
    sussie2 = pygame.image.load('sus1.png')
    sussie3 = pygame.image.load('sus3.png')
    sussie4 = pygame.image.load('sus4.png')

if chooseable_var == 3:
    sussie1 = pygame.image.load('sus4.png')
    sussie2 = pygame.image.load('sus5.png')
    sussie3 = pygame.image.load('sus1.png')
    sussie4 = pygame.image.load('sus3.png')

if chooseable_var == 4:
    sussie1 = pygame.image.load('sus3.png')
    sussie2 = pygame.image.load('sus4.png')
    sussie3 = pygame.image.load('sus5.png')
    sussie4 = pygame.image.load('sus1.png')

elif special_character == 3: imposter = pygame.image.load('sus3.png') chooseable_var = random.randint(1, 4) if chooseable_var == 1: sussie1 = pygame.image.load('sus2.png') sussie2 = pygame.image.load('sus1.png') sussie3 = pygame.image.load('sus4.png') sussie4 = pygame.image.load('sus5.png')

if chooseable_var == 2:
    sussie1 = pygame.image.load('sus5.png')
    sussie2 = pygame.image.load('sus2.png')
    sussie3 = pygame.image.load('sus1.png')
    sussie4 = pygame.image.load('sus4.png')

if chooseable_var == 3:
    sussie1 = pygame.image.load('sus4.png')
    sussie2 = pygame.image.load('sus5.png')
    sussie3 = pygame.image.load('sus2.png')
    sussie4 = pygame.image.load('sus1.png')

if chooseable_var == 4:
    sussie1 = pygame.image.load('sus1.png')
    sussie2 = pygame.image.load('sus4.png')
    sussie3 = pygame.image.load('sus5.png')
    sussie4 = pygame.image.load('sus2.png')

elif special_character == 4: imposter = pygame.image.load('sus4.png') chooseable_var = random.randint(1, 4) if chooseable_var == 1: sussie1 = pygame.image.load('sus2.png') sussie2 = pygame.image.load('sus3.png') sussie3 = pygame.image.load('sus1.png') sussie4 = pygame.image.load('sus5.png')

if chooseable_var == 2:
    sussie1 = pygame.image.load('sus5.png')
    sussie2 = pygame.image.load('sus2.png')
    sussie3 = pygame.image.load('sus3.png')
    sussie4 = pygame.image.load('sus1.png')

if chooseable_var == 3:
    sussie1 = pygame.image.load('sus1.png')
    sussie2 = pygame.image.load('sus5.png')
    sussie3 = pygame.image.load('sus2.png')
    sussie4 = pygame.image.load('sus3.png')

if chooseable_var == 4:
    sussie1 = pygame.image.load('sus3.png')
    sussie2 = pygame.image.load('sus1.png')
    sussie3 = pygame.image.load('sus5.png')
    sussie4 = pygame.image.load('sus2.png')

else: imposter = pygame.image.load('sus5.png') chooseable_var = random.randint(1, 4) if chooseable_var == 1: sussie1 = pygame.image.load('sus2.png') sussie2 = pygame.image.load('sus3.png') sussie3 = pygame.image.load('sus4.png') sussie4 = pygame.image.load('sus1.png')

if chooseable_var == 2:
    sussie1 = pygame.image.load('sus1.png')
    sussie2 = pygame.image.load('sus2.png')
    sussie3 = pygame.image.load('sus3.png')
    sussie4 = pygame.image.load('sus4.png')

if chooseable_var == 3:
    sussie1 = pygame.image.load('sus4.png')
    sussie2 = pygame.image.load('sus1.png')
    sussie3 = pygame.image.load('sus2.png')
    sussie4 = pygame.image.load('sus3.png')

if chooseable_var == 4:
    sussie1 = pygame.image.load('sus3.png')
    sussie2 = pygame.image.load('sus4.png')
    sussie3 = pygame.image.load('sus1.png')
    sussie4 = pygame.image.load('sus2.png')

hero = pygame.image.load('hero.png')

''' Hero ''' heroX = 100 heroY = 100 MOVESPEED = 2 moveRight = False moveLeft = False moveUp = False moveDown = False ''' Imposter ''' ImpX = 50 ImpY = 500 imp_left = False imp_right = True down_val = 64 up_val = -64 default_mover = down_val ''' Sussies ''' Sussie1X = 0 Sussie1Y = 0 Sussie2X = 50 Sussie2Y = 50 Sussie3X = 100 Sussie3Y = 100 Sussie4X = 250 Sussie4Y = 250

''' Main Script ''' game_state = menu while game_state == menu:

display_surface.fill(white)
display_surface.blit(imposter, (ImpX, ImpY))
display_surface.blit(sussie1, (Sussie1X, Sussie1Y))
display_surface.blit(sussie2, (Sussie2X, Sussie2Y))
display_surface.blit(sussie3, (Sussie3X, Sussie3Y))
display_surface.blit(sussie4, (Sussie4X, Sussie4Y))
display_surface.blit(hero, (heroX, heroY))

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        pygame.quit()
        sys.exit()

    if event.type == pygame.KEYDOWN:
        # Change the keyboard variables.
        if event.key == K_LEFT or event.key == K_a:
            moveRight = False
            moveLeft = True
        if event.key == K_RIGHT or event.key == K_d:
            moveLeft = False
            moveRight = True
        if event.key == K_UP or event.key == K_w:
            moveDown = False
            moveUp = True
        if event.key == K_DOWN or event.key == K_s:
            moveUp = False
            moveDown = True
    if event.type == pygame.KEYUP:
        if event.key == K_LEFT or event.key == K_a:
            moveLeft = False
        if event.key == K_RIGHT or event.key == K_d:
            moveRight = False
        if event.key == K_UP or event.key == K_w:
            moveUp = False
        if event.key == K_DOWN or event.key == K_s:
            moveDown = False
    else:
        pass

if moveDown and heroY < WINDOWHEIGHT:
    heroY += MOVESPEED
if moveUp and heroY > 0:
    heroY -= MOVESPEED
if moveLeft and heroX > 0:
    heroX -= MOVESPEED
if moveRight and heroX < WINDOWWIDTH:
    heroX += MOVESPEED

if heroY == 0:
    heroY = 0

if heroX == 0:
    heroX = 0

if heroX == 740:
    heroX = 740

if heroY == 580:
    heroY = 580

if imp_right:
    ImpX += ai_move_speed
    if ImpX == WINDOWWIDTH or ImpX > WINDOWWIDTH:
        imp_right = False
        imp_left = True
        ImpY += default_mover
    if ImpY == 0 or ImpY > WINDOWHEIGHT:
        default_mover = up_val
        imp_left = True
        imp_right = False

    if ImpY == 0 or ImpY < 0:
        default_mover = down_val
        imp_left = True
        imp_right = False

if imp_left:
    ImpX -= ai_move_speed
    if ImpX == 0 or ImpX < 0:
        imp_left = False
        imp_right = True
        ImpY += default_mover
    if ImpY == WINDOWHEIGHT or ImpY > WINDOWHEIGHT:
        default_mover = up_val
        imp_left = False
        imp_right = True

    if ImpY == 0 or ImpY < 0:
        default_mover = down_val
        imp_left = False
        imp_right = True

clock.tick(fps)
pygame.display.update()

Cafeteria: https://among-us.fandom.com/wiki/Cafeteria

enter image description here

1 Answers1

0

If you are okay with using separate files to use as your map : just write down all the obstacles rectangular shape which is INSIDE that map and use that information to whatever collision detection action You need.

However, if you are a beginner I suggest making games with static Viewport (exploring the map only moves the character), they're a lot easier.

Share your code, so we can help you.

liggiorgio
  • 4,636
  • 6
  • 25
  • 37
YoloWex
  • 136
  • 4