🤔 Para Refletir :
"No alto daquela ideia, plantei um projeto de jogo. A empolgação da ideia bate, o fracasso da ideia cheira."
- DanTheLion

Gincana de Natal - Central de Pesquisas

Estado
Tópico fechado. Não é possível fazer postagens nela.
Brandt comentou:
Sinceramente, deixei desse jeito mesmo por preguiça e por não saber que nome dar pras funções (do_something e do_other_thing não vale), rs.

Pra falar a verdade, eu também pensei em um nome para dar para essas funções no exemplo, mas não consegui por ter tanta coisa lá haha! Funções difíceis de serem nomeados é um forte indício de estarem com muita responsabilidade e fazendo muitas coisas diferentes. Talvez para esse caso, caberia até a criação de mais de dois métodos.

Brandt comentou:
Resque]Você poderia ter utilizado uma constante dar o nome da tecla ao #13. EX: [code]KEY_ENTER = 13; ... if key == KEY_ENTER: ...[/code][/quote] Vou seguir o exemplo do python e fingir que não vi aquele [font=courier];[/font] ali... :u.uzzz: [/quote] Opss comentou:
Não sei se eu consigo fazer em tempo, mas vamos lá né. Manda mais uma azul aí please.


Uma caixa azul saindo [member=78]Brandt[/member]!

Sistema de Batata Quente de Natal

- Sistema deve permitir que o jogador controle o papai noel em um jogo de batata quente;
- O papai noel terá 6 Ogro Noéis como adversários;
- Uma musica de natal ficará tocando, e quando parar, quem estiver segurando a batata será eliminado;

- O sistema deve ser configurável para que:

1) A quantidade de inimigos seja de fácil personalização
2) O jogador pode escolher se o objeto que será passado de mão em mão será uma batata, ou um gorro, ou um sininho de natal.
 
HermesPasser comentou:
Vamo lá, já pedi uma verde?


Uma caixa verde saindo [member=1330]HermesPasser[/member]!

Sistema de Ornamentos de Natal

- O jogador terá contar visualmente quantos ornamentos existem em cada árvore de natal;
- Uma árvore aparecerá por vez para o jogador, e ele precisa fazer a contagem o mais rápido possível para que a próxima apareça;
- O jogador terá que digitar a quantidade exata de ornamentos para acertar;
- O sistema deve ter um tempo máximo e cacular a pontuação de cada acerto;
- Os ornamentos são: (mini-papai noel, bolinhas de natal, sininhos, etc..).

- O sistema deve ser configurável para que:

1) O tempo máximo de cada partida (em segundos) seja configurável
2) A pontuação de cada arvore seja configurável
 
Kazzter comentou:
https://www.condadobraveheart.com/forum/index.php?topic=4942.new#new

Outra caixa, mesma cor.


Uma caixa amarela saindo [member=1820]Kazzter[/member]!

Sistema de Jogo da velha

- O sistema deve permitir que o jogador tenha uma partida do antigo "Jogo da Velha";
- Cada turno o jogador ou a AI deve escolher "X" ou "O" para preencher as lacunas vazias;
- Quem preencher 3 lacunas na vertical, horizontal ou diagonal primeiro, vence;
- Cada turno o primeiro a jogar é escolhido aleatoriamente (Jogador ou AI).

- O sistema deve permitir que o jogador faça a seguinte configuração:

1) O jogador escolha se quer utilizar "X" ou "O" na partida.
 
Cheguei a tentar e creio que seja muito complexo para mim conseguir fazer uma AI que avalie todas as possibilidades de jogadas, outra quando passarem as 24h.
 
HermesPasser comentou:


Uma caixa azul saindo [member=1330]HermesPasser[/member] !

Sistema de Jogo da velha

- O sistema deve permitir que o jogador tenha uma partida do antigo "Jogo da Velha";
- Cada turno o jogador ou a AI deve escolher "X" ou "O" para preencher as lacunas vazias;
- Quem preencher 3 lacunas na vertical, horizontal ou diagonal primeiro, vence;
- Cada turno o primeiro a jogar é escolhido aleatoriamente (Jogador ou AI).

- O sistema deve permitir que o jogador faça a seguinte configuração:

1) O jogador escolha se quer utilizar "X" ou "O" na partida.
 
Avaliação - Carregador de Presentes

[member=1820]Kazzter[/member]

Gostei bastante do seu jogo, ficou bem completo, desde a temática, ambientação e música.

Os NPCs de Papai Noel e Ogro, me agradaram muito.

Sobre a estrutura dos eventos, você conseguiu apresentar uma boa arquitetura e organização, além de nomear devidamente todas as variáveis.

O único ponto que tenho para apresentar, é a esteira que ficou sem movimentação, e por conta disso ficou parecendo com uma parede.

Eu fiquei alguns minutos procurando o local de entregar o presente, até achei que a esteira estava em outro mapa e fiquei conversando com o relógio, armários e colunas.

Pontuação: 195P.
 
Kazzter comentou:
Cheguei a tentar e creio que seja muito complexo para mim conseguir fazer uma AI que avalie todas as possibilidades de jogadas, outra quando passarem as 24h.


Uma caixa amarela saindo [member=1820]Kazzter[/member]  !

O carro do Papai Noel

- O sistema deve permitir que o jogador controle o carro do papai noel;
- O jogador precisa desviar os obistáculos que aparecem no caminho;
- Os obstáculos vao aparecer com mais frequência com base no tempo de jogo ficando cada vez mais difícil de desviar;
- O sistema precisa exibir a contagem do tempo na tela e gravar;
- O sistema precisa salvar o tempo record do jogador

- O sistema deve permitir que o jogador faça a seguinte configuração:

1) Escolha os níveis, fácil, normal ou difícil.
 
HermesPasser comentou:



Uma caixa vermelha saindo  [member=1330]HermesPasser[/member] !

Sistema de Rifas de Natal

- O jogador precisa convencer os NPCs a comprarem suas rifas, que valem uma cesta de natal;
- Cada NPC necessita de diálogos e missões específicas para ser convencido a comprar a rifa;
- Um tempo limite para a venda das rifas deve ser adicionado, se acabar e nem todas foram vendidas, fim de jogo;
- O sistema precisa gerar o ganhador da rifa aleatoriamente, para que não haja repetição nos resultados;

- O sistema deve ser configurável para que:

1) A quantidade espaços na rifa seja customizável.
2) NPCs sejam adicionados/excluídos.
 
HermesPasser comentou:
Considerando que recebi essa ontem já posso trocar? De qualquer forma dropando essa.

Apenas 24 horas após o pedido de cancelamento.




  Análise - Gif

[member=1330]HermesPasser[/member]

Linha #3

Você tem uma constante chamada COLORS:

Código:
const COLORS = ['RED', 'GREEN', 'BLUE', 'YELLOW', 'PINK'];

Mas no código abaixo na Linha #160 até #193, você utilizou strings para escrever as mesmas cores.

Se no futuro alguma cor da constante for alterada, você terá problemas difíceis de serem encontrados:

Código:
  setObjs(){
    this.santa = new Santa(this.santaDefX, 100);
  
    this.blueHouse = new SimpleRectCollisor(50, 359, 17, 2);
    this.blueHouse.tag = 'BLUE';
    this.greenHouse = new SimpleRectCollisor(98, 357, 17, 2);
    this.greenHouse.tag = 'GREEN';
    this.redHouse = new SimpleRectCollisor(194, 357, 17, 2);
    this.redHouse.tag = 'RED';
    this.yellowHouse = new SimpleRectCollisor(363, 363, 17, 2);
    this.yellowHouse.tag = 'YELLOW';
    this.pinkHouse = new SimpleRectCollisor(412, 357, 17, 2);
    this.pinkHouse.tag = 'PINK';
  }



Linha #160 até #193

Evite repetição de código, ao repetir a da criação de instâncias, você terá que alterar todos os locais se algum parâmetro da classe "SimpleRectCollisor" foi alterado.

Para isso, você poderia criar a classe "House"

Código:
class House {
  constructor(color, x, y, width, height){
    let rect = new SimpleRectCollisor(x, y, width, height)
    rect.tag = color;
  }
}

E alterar o código de:

Código:
  setObjs(){
    this.santa = new Santa(this.santaDefX, 100);
  
    this.blueHouse = new SimpleRectCollisor(50, 359, 17, 2);
    this.blueHouse.tag = 'BLUE';
    this.greenHouse = new SimpleRectCollisor(98, 357, 17, 2);
    this.greenHouse.tag = 'GREEN';
    this.redHouse = new SimpleRectCollisor(194, 357, 17, 2);
    this.redHouse.tag = 'RED';
    this.yellowHouse = new SimpleRectCollisor(363, 363, 17, 2);
    this.yellowHouse.tag = 'YELLOW';
    this.pinkHouse = new SimpleRectCollisor(412, 357, 17, 2);
    this.pinkHouse.tag = 'PINK';
  }

Para:

Código:
  setObjs(){
    this.santa = new Santa(this.santaDefX, 100);
    
    let houses_x = [50, 98, 194, 363, 412]
    
    for (let i in houses_x)
      new House(COLORS[i], houses_x[i], 359, 17, 2)
  }



Algo que tenho notado nos seus scripts, é a baixa qualidade dos elementos gráficos. Sei que são simples e não ligo para isso, além do mais, essa é uma gincana de código e eventos, e não de imagem.

A imagem do presente que exibe a cor do próximo que será jogado pelo Papai Noel, está um pouco difícil para ser visualizada, e o presente que cai do papai Noel também, isso acaba atrapalhando o gameplay.

Pontuação: 180P
 
HermesPasser comentou:


Uma caixa vermelha saindo [member=1330]HermesPasser[/member] !

Sistema de Pesca

- O jogador precisa pescar diversos peixes para atingir uma quantidade x de pontos pré-estabelecida ;
- Cada peixe deve ter um valor específico, sendo os mais valiosos mais difíceis de serem pegos;
- A quantidade de tentativas ser limitadas em cada novo estágio;

- O sistema deve ser configurável para que:

1) A quantidade de peixes disponíveis seja customizável.
2) A dificuldade para pescar cada peixe seja ajustável.
 
HermesPasser comentou:


Uma caixa azul saindo [member=1330]HermesPasser[/member]  !

Sistema de fogueira

- O jogador deverá cumprir certas tarefas para acender uma fogueira e mantê-la acesa;
- Um medidor de temperatura deve ser adicionado à tela;
- Se o medidor chegar a um nível muito baixo, fim de jogo;

- O sistema deve ser configurável para que:

1) Cada fogueira necessite de quantidade X de madeira para permanecer acesa por X tempo.
 
Análise - Gorro do Papai Noel

[member=1324]Eranot[/member]

Gostei bastante do jogo, ficou exatamente como eu esperava, as opções de configurações de dificuldade e quantidade de gorros ficou muito legal, além da contagem de pontos ficar no lugar certo.

Você estruturou os elementos do jogo de forma bem profissional, lembrei das minhas épocas de acesso ao "Fliperama".

Sobre o código, não tenho objeções, ficou tudo bem organizado.

Apenas um ponto que notei, é quando clico em "Jogar" e depois clico imediatamente em "Voltar ao Menu", o jogo trava, voltando só depois de atualizar o navegador com um F5. Tive esse mesmo problema em dois navegadores diferentes, Google Chrome e Firefox, e quando isso acontece, recebo esse erro no console:

Código:
index.js:4 exception thrown: RuntimeError: memory access out of bounds,RuntimeError: memory access out of bounds
    at wasm-function[1922]:1193
    at wasm-function[17532]:306
    at wasm-function[2383]:67
    at wasm-function[10201]:280
    at wasm-function[6307]:582
    at wasm-function[366]:110
    at wasm-function[42692]:1022
    at wasm-function[17598]:978
    at wasm-function[17112]:292
    at wasm-function[40373]:9

Pontuação: 215P.
 
Análise - Gemas Elementais

[member=1820]Kazzter[/member]

Gostei bastante do sistema apresentado, a forma com que você organizou os eventos utilizando condicionais e variáveis devidamente nomeadas ficou muito bom e flexível.

Não tenho objeções referente a estrutura e organização, mas um ponto que me chamou atenção é as "gems" e "armaduras" não sumirem ao serem pegas.

Você poderia duplicar os sprites para dar a impressão itens agrupados ou fazer eles sumirem.

Pontuação: 175
 
Análise - Noel Workout

[member=78]Brandt[/member]

Arquivo GameManager Linha #37

Código:
  def scroll_speed_increment
    return $game_score / 100.0 / Graphics.frame_rate
  end

Os métodos em Ruby sempre retornam a ultima linha por padrão, o return acaba sendo usado para forçar uma saídas do método antes que chegue na ultima linha, igual você fez no código abaixo:

EX:

Código:
  def generate_obstacle(y)
    return unless rand(100) < 90
    range = (1...width).to_a - track_range(y).to_a
    return if range.empty?
    type = obstacle_types_by_rate.sample
    x = range.sample
    if @obstacles[y].nil?
      @obstacles[y] = Game_Obstacle.new(type, x, y)
    else
      @obstacles[y].type = type
      @obstacles[y].x = x
      @obstacles[y].y = y
    end
  end

O método da linha #37 poderia ser alterado para:

Código:
  def scroll_speed_increment
    $game_score / 100.0 / Graphics.frame_rate
  end




Arquivo Spriteset_Christmas Linhas #24, #26 e #27.

Código:
  def create_viewports
    @viewport1 = Viewport.new
    @viewport2 = Viewport.new
    @viewport2.z = 100
    @viewport3 = Viewport.new
    @viewport3.z = 300
  end

Utilizar números (1, 2 e 3) no final do nome de variáveis 'viewport' dificulta a leitura, cada viewport poderia carregar a finalidade em seu próprio nome:

EX:

Código:
  def create_viewports
    @viewport_track = Viewport.new
    @viewport_santa = Viewport.new
    @viewport_santa.z = 100
    @viewport_score = Viewport.new
    @viewport_score.z = 300
  end

Código:
  def update
    @viewport_track.update
    @viewport_santa.update
    @viewport_score.update
    ...



No começo do jogo, se o personagem for carregado para a extrema direita, ele nunca será congelado mesmo estando na neve:

IxBKowz.png

Gostei muito da temática, organização de código, musica e apresentação visual. Ficou ótimo, parabéns!!

Pontuação: 220P.
 
Estado
Tópico fechado. Não é possível fazer postagens nela.
Voltar
Topo Inferior