Skip to content

Commit

Permalink
juego terminado
Browse files Browse the repository at this point in the history
  • Loading branch information
kone9 committed May 6, 2020
1 parent 1ebdf86 commit 60e05e8
Show file tree
Hide file tree
Showing 38 changed files with 405 additions and 116 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
source_md5="f992a46100220ca1148978becf8ffd19"
dest_md5="0a021db42e78a7aaa2f62cc44d31a75d"
dest_md5="e582a685861d1cd0ee17c31380287450"

Binary file not shown.
3 changes: 3 additions & 0 deletions .import/golpeTextura.png-b65b8a77f934899b8a375d123244e5c7.md5
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source_md5="fc887ed65f3bbbacb44256ae7af33a5b"
dest_md5="bb6003e168929c8d91a0b22b6fa28392"

Binary file not shown.
2 changes: 1 addition & 1 deletion .mono/metadata/scripts_metadata.editor
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"res://codigos/BoardManager.cs":{"modified_time":"1587848329","class":{"namespace":"","class_name":"BoardManager","nested":false}},"res://codigos/Enemy.cs":{"modified_time":"1588356725","class":{"namespace":"","class_name":"Enemy","nested":false}},"res://codigos/Escena_Principal.cs":{"modified_time":"1588085127","class":{"namespace":"","class_name":"Escena_Principal","nested":false}},"res://codigos/GameManager.cs":{"modified_time":"1588265510","class":{"namespace":"","class_name":"GameManager","nested":false}},"res://codigos/MovingObject.cs":{"modified_time":"1588535072","class":{"namespace":"","class_name":"MovingObject","nested":false}},"res://codigos/Player.cs":{"modified_time":"1588534166","class":{"namespace":"","class_name":"Player","nested":false}},"res://codigos/SingletonVariables.cs":{"modified_time":"1588182349","class":{"namespace":"","class_name":"SingletonVariables","nested":false}},"res://codigos/SuelosScript/Suelo1.cs":{"modified_time":"1587836811","class":{"namespace":"","class_name":"Suelo1","nested":false}},"res://codigos/Wall.cs":{"modified_time":"1588244399","class":{"namespace":"","class_name":"Wall","nested":false}}}
{"res://codigos/BoardManager.cs":{"modified_time":"1588712203","class":{"namespace":"","class_name":"BoardManager","nested":false}},"res://codigos/Enemy.cs":{"modified_time":"1588763898","class":{"namespace":"","class_name":"Enemy","nested":false}},"res://codigos/Escena_Principal.cs":{"modified_time":"1588085127","class":{"namespace":"","class_name":"Escena_Principal","nested":false}},"res://codigos/GameManager.cs":{"modified_time":"1588763290","class":{"namespace":"","class_name":"GameManager","nested":false}},"res://codigos/MovingObject.cs":{"modified_time":"1588700252","class":{"namespace":"","class_name":"MovingObject","nested":false}},"res://codigos/Player.cs":{"modified_time":"1588763570","class":{"namespace":"","class_name":"Player","nested":false}},"res://codigos/SingletonVariables.cs":{"modified_time":"1588182349","class":{"namespace":"","class_name":"SingletonVariables","nested":false}},"res://codigos/SuelosScript/Suelo1.cs":{"modified_time":"1587836811","class":{"namespace":"","class_name":"Suelo1","nested":false}},"res://codigos/Wall.cs":{"modified_time":"1588762607","class":{"namespace":"","class_name":"Wall","nested":false}}}
2 changes: 1 addition & 1 deletion .mono/metadata/scripts_metadata.editor_player
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"res://codigos/BoardManager.cs":{"modified_time":"1587848329","class":{"namespace":"","class_name":"BoardManager","nested":false}},"res://codigos/Enemy.cs":{"modified_time":"1588356725","class":{"namespace":"","class_name":"Enemy","nested":false}},"res://codigos/Escena_Principal.cs":{"modified_time":"1588085127","class":{"namespace":"","class_name":"Escena_Principal","nested":false}},"res://codigos/GameManager.cs":{"modified_time":"1588265510","class":{"namespace":"","class_name":"GameManager","nested":false}},"res://codigos/MovingObject.cs":{"modified_time":"1588535072","class":{"namespace":"","class_name":"MovingObject","nested":false}},"res://codigos/Player.cs":{"modified_time":"1588534166","class":{"namespace":"","class_name":"Player","nested":false}},"res://codigos/SingletonVariables.cs":{"modified_time":"1588182349","class":{"namespace":"","class_name":"SingletonVariables","nested":false}},"res://codigos/SuelosScript/Suelo1.cs":{"modified_time":"1587836811","class":{"namespace":"","class_name":"Suelo1","nested":false}},"res://codigos/Wall.cs":{"modified_time":"1588244399","class":{"namespace":"","class_name":"Wall","nested":false}}}
{"res://codigos/BoardManager.cs":{"modified_time":"1588712203","class":{"namespace":"","class_name":"BoardManager","nested":false}},"res://codigos/Enemy.cs":{"modified_time":"1588763898","class":{"namespace":"","class_name":"Enemy","nested":false}},"res://codigos/Escena_Principal.cs":{"modified_time":"1588085127","class":{"namespace":"","class_name":"Escena_Principal","nested":false}},"res://codigos/GameManager.cs":{"modified_time":"1588763290","class":{"namespace":"","class_name":"GameManager","nested":false}},"res://codigos/MovingObject.cs":{"modified_time":"1588700252","class":{"namespace":"","class_name":"MovingObject","nested":false}},"res://codigos/Player.cs":{"modified_time":"1588763570","class":{"namespace":"","class_name":"Player","nested":false}},"res://codigos/SingletonVariables.cs":{"modified_time":"1588182349","class":{"namespace":"","class_name":"SingletonVariables","nested":false}},"res://codigos/SuelosScript/Suelo1.cs":{"modified_time":"1587836811","class":{"namespace":"","class_name":"Suelo1","nested":false}},"res://codigos/Wall.cs":{"modified_time":"1588762607","class":{"namespace":"","class_name":"Wall","nested":false}}}
Binary file modified .mono/temp/bin/Debug/Rogue en Godot.dll
Binary file not shown.
Binary file modified .mono/temp/bin/Debug/Rogue en Godot.pdb
Binary file not shown.
Binary file modified .mono/temp/obj/Debug/Rogue en Godot.dll
Binary file not shown.
Binary file modified .mono/temp/obj/Debug/Rogue en Godot.pdb
Binary file not shown.
18 changes: 18 additions & 0 deletions animaciones/golpeWall.tres
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[gd_resource type="Animation" format=2]

[resource]
resource_name = "golpeWall"
length = 0.09
step = 0.01
tracks/0/type = "value"
tracks/0/path = NodePath("..:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.04, 0.07, 0.09 ),
"transitions": PoolRealArray( 1, 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 10.0, -10.0, 0.0 ]
}
53 changes: 53 additions & 0 deletions animaciones/tomarAlimento.tres
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
[gd_resource type="Animation" format=2]

[resource]
resource_name = "tomarSoda"
length = 0.6
tracks/0/type = "value"
tracks/0/path = NodePath("..:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector2( 1, 1 ), Vector2( 1.6, 1.6 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("..:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0.1, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("..:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0, 0.6 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ true, false ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("..:z_index")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0, 0.1 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ 1, 3 ]
}
36 changes: 30 additions & 6 deletions codigos/BoardManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,20 @@ public class BoardManager : Node2D
public int columns = 8;//numero de columnas
[Export]
public int rows = 8;//numero de filas
[Export]
public int FoodQuantityMIN = 1;//cantidad mínima de comida en un escneario
[Export]
public int FoodQuantityMAX = 5;//cantidad máxima de comida en un escneario
[Export]
public int wallQuantityMIN = 5;//cantidad mínima de obstaculos en un escneario
[Export]
public int wallQuantityMAX = 9;//cantidad máxima de obstaculos en un escneario
//Esto es para contolar la dificultad,puede verse en una grafica como ira aumentando paulantinamente dependiendo cuanto lo multiplique esta variable
[Export]
public int controlDificulty = 1;//esta variable se usa para multiplicar la función logaritmica que instancia cantidad de objetos y de esta forma poder aumentar o bajar la cantidad de enemigos,osea manejar la dificultad



[Export]
private Godot.Collections.Array<PackedScene> floorTiles,outerWallTiles,wallTiles,foodTiles,EnemyTiles;//suelos empaquetados para precargar desde el editor
[Export]
Expand All @@ -19,6 +32,7 @@ public class BoardManager : Node2D
private Sprite toInstantiate;//referencia a los bloques del suelo que seran instanciados

private Node2D board;//para poner todos los suelos instanciados


public override void _Ready()
{
Expand Down Expand Up @@ -85,28 +99,38 @@ private void LayoutObjectAtRandomKinematicBody2D(Godot.Collections.Array<PackedS

public void SetupScene(int level)//esto crea los muros del borde y el suelo..Toma como parametro el nivel para determinar la cantidad de enemigos
{
int enemyCount = 0;//inicializo el contador enemigos
BoardSetup();//prepara la escena básica bordes de alrededor y suelo
InitialiceList();//metemos en esta lista todas las pocisiones donde pueden aparecer objetos de forma aleatoria
LayoutObjectAtRandom(wallTiles,5,9);//cada ves que iniciamos la ejecución nos va a crear entre 5 y 9 muros
LayoutObjectAtRandom(foodTiles,1,5);//hamos lo mismo pero ahora agregamos la comida habra entre 1 y 5 objetos de comida
LayoutObjectAtRandom(wallTiles,wallQuantityMIN,wallQuantityMAX);//cada ves que iniciamos la ejecución nos va a crear entre 5 y 9 muros
LayoutObjectAtRandom(foodTiles,FoodQuantityMIN,FoodQuantityMAX);//hamos lo mismo pero ahora agregamos la comida habra entre 1 y 5 objetos de comida
//int enemyCount = level / 2;//cantidad de enemigos en cada nivel.1.2.3.4.etc lo divido por 2 para que la cantidad sea menor y no tenga tanta dificiltad
int enemyCount = (int)Math.Log(level,2);//tambien se puede hacer que el incremento de la dificultad sea de forma logaritmica,supuestamente asi esta en el tutorial de unity aqui se usa en base 2
if(level == 1)//si es el nivel 1 no hay enemigos
{
enemyCount = (int)Math.Log(level,2);//tambien se puede hacer que el incremento de la dificultad sea de forma logaritmica,supuestamente asi esta en el tutorial de unity aqui se usa el logaritmo en "BASE 2" y en este caso es multiplicado por un factor de dificultad
}
else if(level == 2)//para que si la dificultad es 2 en el segundo nivel aparesca 1
{
enemyCount = (int)Math.Log((level - 1) * controlDificulty,2);//tambien se puede hacer que el incremento de la dificultad sea de forma logaritmica,supuestamente asi esta en el tutorial de unity aqui se usa el logaritmo en "BASE 2" y en este caso es multiplicado por un factor de dificultad
}
else//sino la cantidad de enemigos depende de que el nivel sea mayor a 1 y la dificultad
{
enemyCount = (int)Math.Log(level * controlDificulty,2);//tambien se puede hacer que el incremento de la dificultad sea de forma logaritmica,supuestamente asi esta en el tutorial de unity aqui se usa el logaritmo en "BASE 2" y en este caso es multiplicado por un factor de dificultad
}
LayoutObjectAtRandomKinematicBody2D(EnemyTiles,enemyCount,enemyCount);//Esto crea la cantidad de enemigos dependiendo el nivel,siempre sera 1 número por eso en la aletatoriedad va el mismo número
instanciarSalida();//ahora instanciamos el nodo que posee la salida,osea el sprite
}


private async void BoardSetup() //metodo para crear el escenario inciial
private void BoardSetup() //metodo para crear el escenario inciial
{

//recorremos la X
for(int x = -1; x < columns + 1; x++ )//si el area es 8x8 quiero tambien incluir en ese area el borde,entonces si la x primera es el cero en -1 iria el muro
{
//recorremos la y
await ToSignal(GetTree().CreateTimer(0.01f),"timeout");
for(int y = -1; y < rows + 1; y++ )//lo mismo pasa en el eje y..Por eso empieza en -1
{
await ToSignal(GetTree().CreateTimer(0.01f),"timeout");
toInstantiate = GetRandomInArray(floorTiles);//devuelve un objeto instanciado de tipo sprite toma como parametro un array de packetscene

if(x == -1 || y ==-1 || x == columns || y == rows )//si la posicion pertenece al borde
Expand Down
27 changes: 26 additions & 1 deletion codigos/Enemy.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ public class Enemy : MovingObject

private Array<AudioStreamOGGVorbis> scavengers_enemy = new Array<AudioStreamOGGVorbis>();//cargo en este arreglo el recurso de audio enemigo,nota importante el arreglo de Godot es un Generico
private AudioStreamPlayer scavengersEnemyNode;//referencia al nodo
Player hitPlayer;//la inicio vacia

private AnimationPlayer AnimationPlayerEfectos;//referencia al animation player

// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
Expand All @@ -34,6 +38,9 @@ public override void _Ready()
scavengersEnemyNode = (AudioStreamPlayer)GetTree().GetNodesInGroup("scavengers_enemy")[0];//busco el nodo que controla el audio
scavengers_enemy.Add((AudioStreamOGGVorbis)GD.Load("res://musica/scavengers_enemy1.ogg"));//agrego el recurso de sonido
scavengers_enemy.Add((AudioStreamOGGVorbis)GD.Load("res://musica/scavengers_enemy2.ogg"));//agrego el recurso de sonido

//procesar animaciones de efectos
AnimationPlayerEfectos = (AnimationPlayer)GetTree().GetNodesInGroup("AnimationPlayerEfectos")[0];
}

public override void _Process(float delta)
Expand Down Expand Up @@ -90,14 +97,32 @@ protected override Vector2 RaycastDirection(int xDir, int Ydir)//cuando el rayca

protected override void OnCantMoveRigidBody2D(KinematicBody2D go)//sino puede moverse por un kinematicbody como un personaje
{
Player hitPlayer = (Player)go;//de esta forma tendria que acceder al script que tiene el personaje
GD.Print("enemigo colisionando con alguien");
//parece que hay un bug cuando colisionan entre enemigos por eso verifico si esta en el grupo player el cuerpo kinematico
if(go.IsInGroup("Player"))//detectamos que esta en el grupo player para evitar un bug al solicionar los enemigos entre sí
{
hitPlayer = (Player)go;//de esta forma tendria que acceder al script que tiene el personaje
}

if(hitPlayer != null)//si estoy en la casilla player
{
hitPlayer.LoseFood(playerDamage);//descuento comida del personaje

playback.Travel("EnemyAttack");//el enemigo ataca cuando le quitamos puntos al jugador
_GameManager.RandomizeSfx(scavengers_enemy,scavengersEnemyNode);//activo sonido golpe
if(hitPlayer.food >= 10)//si la comida del personaje es mayor o igual a 10
{
AnimationPlayerEfectos.Play("pantallaRoja");//play color rojo en pantalla
AnimationPlayerEfectos.PlayBackwards("pantallaRoja");//play al reves color rojo en pantalla para que quede transparente
}
}
}


protected override void OncanMovePared()//si el enemigo choca contra la pared no hace nada
{
return;//salgo de la función
}
// // Called every frame. 'delta' is the elapsed time since the previous frame.
// public override void _Process(float delta)
// {
Expand Down
20 changes: 18 additions & 2 deletions codigos/GameManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ public class GameManager : Node2D
public bool doingSetup;//es para saber si todabia esta preparandose la escena,osea esta la UI que aparece en el comienzo

private SingletonVariables _SingletonVariables;
Timer TimerReiniciarJuego;

Player _MovingObject;
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
Expand All @@ -32,6 +35,7 @@ public override void _Ready()

_SingletonVariables = GetNode<SingletonVariables>("/root/SingletonVariables");//para acceder al singleton desde el player y cambiar el número del nivel y guardar el puntaje
level = _SingletonVariables.level;
TimerReiniciarJuego = (Timer)GetTree().GetNodesInGroup("TimerReiniciarJuego")[0];

InitGame();//llamo al script que inicia el nivel lo hago desde escena principal

Expand Down Expand Up @@ -66,19 +70,24 @@ public void _on_TimerlevelStarDelay_timeout()//cuando termina el tiempo del star



public void GameOver()//posiblemente esto despues voy a tener que correguirlo
public async void GameOver()//posiblemente esto despues voy a tener que correguirlo
{

//await ToSignal(GetTree().CreateTimer(0.5f), "timeout");//detengo por 1 segundo el flujo del código
LevelText.Text = "After " + level + " Days\nyou starved";//si es game over cambio el texto
fondoColorUI.Visible = true;//hago visible el fondo
LevelText.Visible = true;//hace visible el texto
Visible = false;//desactivo el nodo que contiene este script,esto tendria que desactivar el Game manager para saber que es Game over puede que lo haga de otra manera
doingSetup = true;//si es Game over ya no puedo mover al jugador
await ToSignal(GetTree().CreateTimer(3.0f), "timeout");//detengo por 1 segundo el flujo del código
LevelText.Text = "The game reload \nin 5 second";//cambio la frase
TimerReiniciarJuego.Start();//inicio el timer para reiniciar el juego
}

private async void MoveEnemies()//esta función sera como una corrutina la utilizare para mover a los personajes cada cierto tiempo
{
enemiesMoving = true;//el enemigo se puede mover
await ToSignal(GetTree().CreateTimer(turnDelay),"timeout");//creo un timer que espera el tiempo que tenemos en la variable turnDelay...Esto puede cambiar
//await ToSignal(GetTree().CreateTimer(turnDelay),"timeout");//creo un timer que espera el tiempo que tenemos en la variable turnDelay...Esto puede cambiar
if(enemies.Count == 0)//sino hay enemigos
{
await ToSignal(GetTree().CreateTimer(turnDelay),"timeout");//esperara este tiempo antes que pueda volver a moverse
Expand Down Expand Up @@ -118,6 +127,13 @@ public void RandomizeSfx( Array<AudioStreamOGGVorbis> clips,AudioStreamPlayer Sf
SfxSource.Play();//doy play al sonido

}
public void _on_TimerReiniciarJuego_timeout()
{

GetTree().ReloadCurrentScene();
_SingletonVariables.food = 100;//cambio los valores del singleton
_SingletonVariables.level = 1;//cambio los valores del singleton
}


}
Loading

0 comments on commit 60e05e8

Please sign in to comment.