ProdutosNewsComprarDownloadsDownloadsDownloadsTutoriaisSuporteNão disponívelGaleriaForumContato  

DarkBASIC Pro
Versão de Avaliação
Patch 5.4
USB Dongle
Forum
Indique
Lista de Email
  Diário Antigo
Outros Produtos
Cartography Shop
DarkMatter
Curso 3D Studio
Combinados
Local DBPro Sites
Italy
UK

Proposta: mostrar como criar o score (marcador de pontos) do jogo

Neste tutorial nós iremos mostrar a você como salvar o score do jogados e dos monstros e também mover o monstro ou jogador para uma nova posição quando eles colidem com um bala.

Gosub PlaceMonster
Gosub PlacePlayer

Nós colocamos estes comandos "Gosub" antes do nosso loop principal. Estas duas sub-rotinas colocam o jogador e o monstro em posições aleatórias na matriz.

PlaceMonster:
mX#=X#
mZ#=Z#
mY#=Y#
While Sqrt((X# - MX#)^2 + (Y#+25 - MY#)^2 + (Z# - MZ#)^2)<1600
    mX#=rnd(10000)
    mZ#=rnd(10000)
    mY#= get ground height(1,mX#,mZ#)
EndWhile
Position object 3,mX#,mY#,mZ#
Return

A sub-rotina "PlaceMonster" coloca o monstro em uma localização aleatória da matriz. Esta sub-rotina inicialmente determina a posição do jogador e então checa se o monstro está fora do alcance dele e vice-versa. Posicionando o jogador e o monstro nas mesma coordenadas, asseguram uma nova aleatória posição para ambos. No código desta sub-rotina nós usamos um loop "While" para ter certeza que o monstro é posicionado em um lugar aceitável. Quanto maior a distância entre o monstro e o jogador e esta distância é menor que 1600, então o laço repetirá. Nós estamos usando a fórmula da distância do tutorial, da "Colisão Matemática", para checar a distância entre ambos. Se a distância é menor que 1600 então o código no loop é executado. Uma posição aleatória é gerada e armazenada nas variáveis de posição do monstro. Quando a distância entre as duas posições for maior que 1600 então o laço existe e o monstro é posicionado para um nova localização.

PlacePlayer:
While Sqrt((X# - mX#)^2 + (Y#+25 - mY#)^2 + (Z# - mZ#)^2)<1000
    X#=rnd(10000)
    Z#=rnd(10000)
    Y#= get ground height(1,X#,Z#)
EndWhile
Position camera X#,Y#,Z#
Return

A sub-rotina "PlacePlayer" é a mesma que a sub-rotina "PlaceMonster". A diferença aqui é que nós colocamos o jogador ao invés do monstro. Nós apontamos a câmera na direção do monstro para tornar o encontro ao monstro mais fácil.

set cursor 550,20
print "MScore: ",MonsterScore
set cursor 550,40
print "PScore: ",PlayerScore

Este código é colocado dentro do laço principal. Nós estamos usando o comando set cursor para colocar o texto no lado direito da tela. Na posição do cursor nós imprimimos "MScore" e "PScore" para representar o score do jogador e do monstro respectivamente. Ao lado de cada uma destas palavras nós imprimimos o conteúdo das variáveis "MonsterScore" e "PlayerScore".

if Sqrt((mX# - bX#)^2 + (mY#+25 - bY#)^2 + (mZ# - bZ#)^2) <20
    Gosub PlaceMonster
    inc PlayerScore
    MonsterBulletLife = 1
    BulletLife=0
endif

Este pedaço de código é da sub-rotina "ShootBullet". Esta é a parte da sub-rotina que checa se o monstro foi atingido. Nós inserimos duas linhas de comparação "If" em seu interior. Quando o monstro é atingido nós chamamos a sub-rotina para colocar o monstro em uma nova localização. A próxima coisa que nós fazemos aqui é a variável "PlayerScore" usando o comando.

Pdist=Sqrt((X# - MbX#)^2 + (Y#+25 - MbY#)^2 + (Z# - MbZ#)^2)
if Pdist<50
GoSub PlacePlayer
MonsterBulletLife = 0
inc MonsterScore
endif

Este bloco de código é da sub-rotina "MonsterShootBullet". Como na seção anterior, este código checa se o jogador foi atingido. Se o jogador é atingido a sub-rotina "PlacePlayer" é chamada para colocar o jogador em uma nova localização. Nós incrementamos o score do monstro usando o comando "Inc" e retornamos para a sub-rotina "Monster shoot bullet".

Promoção de Lançamento

Clique aqui para comprar o 
DBPro R$220,00

Clique aqui para comprar o 
DBPro para Universitários R$150,00


clique aqui para comprar o Upgrade a partir da versão clássica por R$150,00

Nova pagina 1

Esta é a barra de navegação para explorar todos os tutoriais da série "A Caça Aos Monstros" 

1.1   1.2   1.3   1.4   1.5   2.1   2.2   2.3   2.4   2.5   3.1   3.2   3.3   3.4   3.5   3.6   3.7   3.8   3.9   3.10   3.11   3.12   3.13   3.14