コード例 #1
0
def show(game):
    win = getWin(game)
    bg = getBackground(game)
    level = getLevel(game)
    player = getPlayer(game)

    win.erase()

    Background.show(bg, win)
    showCursor(player, win)
    for n in range(0, len(level['horde'])):
        Animat.show(level['horde'][n], win)
    Player.show(player, win)
    Tower.show(player, win)
コード例 #2
0
ファイル: main.py プロジェクト: LucieMenard/Survivor
def show():
    global background, animat, animation, timeStep, listeDeBalle, temps
    #rafraichissement de l'affichage
    #effacer la console
    sys.stdout.write("\033[1;1H")  # déplace le curseur en 1,1
    sys.stdout.write("\033[2J")  # clear the screen and move to 0,0
    #affichage des différents éléments
    Background.show(background)
    #debug()
    print temps, "secondes"
    Animat.show(animat)
    for i in listeDeBalle:
        Balle.show(i)  # Affichage de toutes les balles de la liste
    #deplacement curseur
    sys.stdout.write("\033[1;1H\n")  # déplace le curseur en 1,1
コード例 #3
0
def creation_monstres(nb_monstres=15):
    global monstres, max_x, max_y

    for m in range(nb_monstres):
        monstres.append(
            Animat.create(x=random.randint(1, max_x),
                          y=random.randint(3, max_y),
                          type_objet="monstre"))
コード例 #4
0
ファイル: Main.py プロジェクト: ewan-carree/ENIB
def show():
    #affichage des differents elements du jeu
    global background, animat, robot2, joker, shot, name
    Background.show(background, joker)
    chrono()
    Shoot.show(shot[1])
    Shoot.show(shot[2])
    Shoot.show(shot[3])
    Robot2.show(robot2)
    Shoot.show(shot[0])
    Animat.show(animat, name)

    #restoration couleur
    sys.stdout.write("\033[37m")
    sys.stdout.write("\033[40m")

    #deplacement curseur
    sys.stdout.write("\033[1;1H\n")
コード例 #5
0
ファイル: main.py プロジェクト: LucieMenard/Survivor
def contactAnimatBalle():
    global animat, listeDeBalle
    for i in listeDeBalle:
        c = Animat.collisionBalle(animat, i)
        if c == 1:
            time.sleep(0.7)
            finDeJeu()
        else:
            pass
コード例 #6
0
def move(r2,bg,a,s,direction):	#deplacer un tir
	if s["etat"]== "missile": #missile
		x1,y= getPosition(s)
		x=x1+2*direction
		if Background.getChar(bg,x,y)==" ":#deplacement si case libre
			s["x"]=x
			setColor(s,2)
	
		if Background.getChar(bg,x,y)=="*" or Background.getChar(bg,x,y)=="|": #collision mur
			setColor(s,6)
			x,y=Robot2.getPosition(r2)
			setPosition(s,x+8,y+s["decalage"])
			move(r2,bg,a,s,direction)

		x,y = getPosition(s)
		x1,y1 = Animat.getPosition(a)
		if x==x1 and y==y1 or x-1==x1 and y==y1 :#collision joueur
			a["life"] = a["life"] - random.randint(1,3)*r2["degat"]
			Animat.setColor(a,7)

	elif s["etat"]=="roquette": #roquette
		x1,y1= getPosition(s)
		x=x1+3*direction
		y= y1+ random.randint(-1,1)
		if Background.getChar(bg,x,y)==" ":#deplacement si case libre
			s["x"]=x
			s["y"]=y
			setColor(s,2)
		
		if Background.getChar(bg,x,y)=="*" or Background.getChar(bg,x,y)=="|": #collision mur
			setColor(s,6)
			x,y=getPosition(r2)
			setPosition(s,x+8,y+s["decalage"])
			move(r2,bg,a,s,direction)
		
		x,y = getPosition(s)
		x1,y1 = Animat.getPosition(a)
		if x==x1 and y==y1 or x-1==x1 and y==y1 or x+1==x1 and y==y1 :#collision joueur
			a["life"] = a["life"] - random.randint(2,4)*r2["degat"]
			Animat.setColor(a,7)
			
	elif s["etat"] == "tir": #tir du joueur
		x1,y=getPosition(s)	
		x=x1+direction
		if Background.getChar(bg,x,y)==" " or Background.getChar(bg,x,y)=="|":#deplacement si case libre + gestion obstacle
			s["x"]=x
			setColor(s,5)

		if Background.getChar(bg,x,y)=="*":#collision mur
			x,y=getPosition(a)
			setPosition(s,x,y)
			move(r2,bg,a,s,direction)
		
		m,b= getPosition(r2) #position robot
		positionR=[(m+1,b+2),(m+2,b+2),(m+3,b+2),(m+4,b+2),(m+5,b+2),(m+6,b+2),(m+7,b+2),(m+8,b+2),(m+1,b+3),(m+2,b+3),(m+3,b+3),(m+4,b+3),(m+5,b+3),(m+6,b+3),(m+7,b+3),(m+8,b+3),(m+1,b+4),(m+2,b+4),(m+3,b+4),(m+4,b+4),(m+5,b+4),(m+6,b+4),(m+7,b+4),(m+8,b+4),(m+1,b+5),(m+2,b+5),(m+3,b+5),(m+4,b+5),(m+5,b+5),(m+6,b+5),(m+7,b+5),(m+8,b+5),(m+1,b+6),(m+2,b+6),(m+3,b+6),(m+4,b+6),(m+5,b+6),(m+6,b+6),(m+7,b+6),(m+8,b+6)]
		for p in positionR :
			if getPosition(s) == p: #collision tir joueur avec robot
				r2["life"]=r2["life"] - 1
				setColor(r2,7)
コード例 #7
0
def interact():
    global personnage, background, level, fleches, monstres
    #gestion des evenement clavier
    c = ""
    has_moved = False
    level_has_changed = False

    # si une touche est appuyee
    if isData():

        # recuperation touche appuye
        c = sys.stdin.read(1)
        #        print ord(c)

        if c == '\x1b':
            # x1b is ESC
            quitGame()

        elif c == 'k':
            # Touche k appuye : creation fleche avec pour coordonnees celle
            # du personnage et une direction de deplacement en x egale a celle
            # du personnage
            personnage["weapon"] = "arc"
            fleches.append(
                Animat.create(x=personnage["x"],
                              y=personnage["y"],
                              type_objet="fleche",
                              last_move_x=personnage["last_move_x"]))

        elif c == 'q' or 'd' or ' ':
            # deplacement a droite ou a gauche, ou saut
            personnage["weapon"] = "arc"
            personnage["direction"] = c
            # Permet de changer de direction du personnage
            [has_moved, level, level_has_changed
             ] = Animat.changeDirection(personnage, level, c, monstres)

    return has_moved, level_has_changed
コード例 #8
0
ファイル: Main.py プロジェクト: ewan-carree/ENIB
def init():
    global animat, background, timeStep, robot2, shot, joker, animation

    # creation des elements du jeu
    animat = Animat.create()
    background, joker = Background.create("Background.txt")
    robot2 = Robot2.create()
    shot = []
    tirjoueur = Shoot.create(x=55,
                             y=4,
                             color=5,
                             decalage=0,
                             etat="tir",
                             tir="--")
    shot.append(tirjoueur)
    roquetterobot = Shoot.create(x=10,
                                 y=14,
                                 color=2,
                                 decalage=4,
                                 etat="roquette",
                                 tir="-->")
    shot.append(roquetterobot)
    missilerobot = Shoot.create(x=10,
                                y=12,
                                color=2,
                                decalage=2,
                                etat="missile",
                                tir="--")
    shot.append(missilerobot)
    missile2robot = Shoot.create(x=10,
                                 y=16,
                                 color=2,
                                 decalage=6,
                                 etat="missile",
                                 tir="--")
    shot.append(missile2robot)
    animation = []
    win = Animation.create(filename="win.txt")
    animation.append(win)
    lose = Animation.create(filename="lose.txt")
    animation.append(lose)
    start = Animation.create(filename="start.txt")
    animation.append(start)

    #effacer la console
    sys.stdout.write("\033[1;1H")
    sys.stdout.write("\033[2J")
コード例 #9
0
ファイル: main.py プロジェクト: LucieMenard/Survivor
def init():
    global animat, background, temps, listeDeBalle
    #initialisation de la partie
    temps = 0.0
    # Creation des élèments du jeu
    # Pas de création de balle ici car déja fait avec la fonction createBalles()
    # le fond
    background = Background.create("fond2.txt")
    # l'animat
    animat = Animat.create(2, 19)

    # Interaction clavier
    tty.setcbreak(sys.stdin.fileno())

    # Effacer la console
    sys.stdout.write("\033[1;1H")
    sys.stdout.write("\033[2J")
コード例 #10
0
ファイル: Main.py プロジェクト: ewan-carree/ENIB
def interact():
    #gestion des evenement clavier
    global animat, background, timeStep, robot2, shot

    #si une touche est appuyee
    if isData():
        c = sys.stdin.read(1)
        if c == '\x1b':  # x1b is ESC
            quitGame()
        elif c == "z":  #deplacement haut
            Animat.moveH(animat, robot2, background)
        elif c == "q":  #deplacement gauche
            Animat.moveL(animat, robot2, background)
        elif c == "s":  #deplacement bas
            Animat.moveD(animat, robot2, background)
        elif c == "d":  #deplacement droite
            Animat.moveR(animat, robot2, background)
        elif c == '6' or c == '0':  #touche triche pour joueur
            cheat()
コード例 #11
0
ファイル: main.py プロジェクト: LucieMenard/Survivor
def interact():
    # Gestion des evenement clavier
    # Si une touche est appuyee, renvoie True
    if isData():
        c = sys.stdin.read(1)
        if c == '\x1b':  # x1b is ESC
            quitGame()
        elif c == 'q' or c == 'Q':
            Animat.decelerationVX(animat)
        elif c == 'd' or c == "D":
            Animat.accelerationVX(animat)
        elif c == '\x20':  #x20 est espace
            Animat.accelerationVY(animat)
コード例 #12
0
def create(nbMonster, horde, bg, nbLevel):
    level = dict()
    level["nbMonster"] = nbMonster
    level["horde"] = horde
    level['nbLevel'] = nbLevel

    for i in range(0, level["nbMonster"] - 1):

        animat = Animat.create(
            direction="right",
            x=bg["spawn"][1],
            y=bg["spawn"][0],
            cara="M",
            finishx=bg["finish"][1],
            finishy=bg["finish"][0],
            color=1,
            life=4,
            mvt=False
        )
        level["horde"].append(animat)

    return level
コード例 #13
0
def init(debug=False):
    global personnage, background, timeStep, level, monstres, boss, max_x, max_y

    max_y, max_x = Background.get_terminal_size()
    #print max_y
    #print max_x
    #initialisation de la partie

    # Creation des elements du jeu (personnage et monstres)

    personnage = Animat.create(x=2, y=5, type_objet="personnage")

    #    boss         = Animat.create(x=random.randint(5,max_x),  y=5, type_objet="boss")

    creation_monstres(nb_monstres=20)

    # Creation du fond
    Background.init_background('galerie.txt')
    Background.display_background()

    # interaction clavier
    tty.setcbreak(sys.stdin.fileno())
コード例 #14
0
ファイル: Background.py プロジェクト: ewan-carree/ENIB
def move(j, a, bg):  # deplacement joker vie
    x1, y1 = getPosition(j)
    x = x1 + 1
    y = y1
    if getChar(bg, x, y) == " ":  #deplacement si case libre
        j['x'] = x
        setColor(j, 1)

    elif getChar(
            bg, x,
            y) == "*":  #collision mur du joker si le joueur ne l'a pas pris
        setColor(j, 6)
        x = 3
        y = random.randint(2, 21)
        setPosition(j, x, y)
        move(j, a, bg)

    if getPosition(j) == Animat.getPosition(a):  #joueur recupere bonus vie
        a["life"] = a["life"] + random.randint(1, 5)
        x = 3
        y = random.randint(2, 21)
        setPosition(j, x, y)
        move(j, a, bg)
コード例 #15
0
ファイル: main.py プロジェクト: LucieMenard/Survivor
def moveAnimat():
    global animat, friction, gravite, timeStep, background
    # Inialisation des variables
    x = Animat.getX(animat)
    y = Animat.getY(animat)
    vx = Animat.getVX(animat)
    vy = Animat.getVY(animat)
    # Application de la friction et de la gravité sur les vitesses pour qu'elles diminuent
    vx = vx - vx * friction
    vy = vy - gravite  # avant : vy - vy * gravite
    # Limiter les vitesses
    if vx > 7.0:
        vx = 7.0
    elif vx < -7.0:
        vx = -7.0
    if vy > 7.0:
        vy = 7.0
    elif vy < -7.0:
        vy = -7.0
    # Changement des vitesses
    Animat.setVX(animat, vx)
    Animat.setVY(animat, vy)
    ## Gestion des collisions
    # Calcul de la prochaine position X et Y théorique par rapport à la vitesse
    dx = vx * timeStep
    dy = vy * timeStep
    nx = x + dx
    ny = y - dy  # Car on a un repère orthonormé inversé
    # Détection d'obstacle à la prochaine position
    if Background.getElement(background, nx, y) == 0:  # rien
        Animat.setX(animat, nx)
    else:  #rebond sur un mur
        Animat.setVX(animat, -vx / 2)

    if Background.getElement(background, x, ny) == 0:  # rien
        Animat.setY(animat, ny)
    else:  # atterrissage sur plafond ou sol ou plateforme
        Animat.setVY(animat, 0)

    return
コード例 #16
0
def run(debug=False):
    global personnage, level, monstres

    list_pos_to_restore = []

    # Boucle de simulation
    while 1:

        #effacer la console
        if False:
            sys.stdout.write("\033[1;1H")
            sys.stdout.write("\033[2J")

        # Interaction avec l'objet
        [has_movedA, level_has_changed1] = interact()
        [has_movedB, level,
         level_has_changed2] = Animat.move_personnage(personnage, level,
                                                      monstres, debug)

        if level_has_changed1 == True or level_has_changed2 == True:
            supprimer_monstres()
            creation_monstres(nb_monstres=(level + 1) * 10)
#        has_moved                                      = Animat.move_monstre(boss,level)

# affichage des differents elements
# On garde en memoire les positions pour une restauration
# ulterieure du fond d'ecran

# Mieux vaut rafraichir la position du personnage tout le temps
# Il etait souvent efface par la collision avec les montres
        Background.partial_restore_background(list_pos_to_restore)

        list_pos_to_restore = Animat.show(personnage)

        #        if has_moved:
        #            list_pos_to_restore.extend( Animat.show(boss) )

        for monstre in monstres:
            has_moved = Animat.move_monstre(monstre)
            if has_moved:
                list_pos_to_restore.extend(Animat.show(monstre))

        # Deplacement des fleches
        ind_fleche = 0
        list_arrow_to_remove = []
        for fleche in fleches:
            [has_moved, delete_fleche] = Animat.move_fleche(fleche)

            if has_moved:
                list_pos_to_restore.extend(Animat.show(fleche))

            if delete_fleche == False:
                # actualisation des points de vie
                delete_fleche = Animat.monster_life(fleche, monstres)

            if delete_fleche == True:
                list_arrow_to_remove.append(ind_fleche)

            ind_fleche += 1

        # On supprime les fleches qui doivent l'etre
        for ind_arrow in list_arrow_to_remove:
            #print('Suppression fleche %d' % ind_arrow)
            fleches.pop(ind_arrow)

        # On test la collision entre le personnage et les monstres
        game_over = Animat.player_life(personnage, monstres)

        # Arret du jeu
        if game_over == True or level == 4:
            quitGame()

        # restoration couleur
        sys.stdout.write("\033[37m")
        sys.stdout.write("\033[40m")

        #deplacement curseur
        sys.stdout.write("\033[0;0H\n")

        time.sleep(0.0365)