Jump to content
JoãoCarreiro

Jogo em C# XNA

Recommended Posts

JoãoCarreiro

Boas pessoal, comecei a explorar esta linguagem de programação há pouco tempo, e estava a tentar desenvolver um joguinho simples.

Algo como um objecto a saltar, que de bounce pelas paredes do "form" e o objectivo seria clicar em cima do objeto para obter a maior pontuação, ao clicar no objeto a pontuação aumentava por 1, e ao falhar reiniciava o score, tambem por cada click a velocidade do objeto a saltar aumenta.

Eu ja tenho o objeto a saltar, so estou com dificuldades em inserir a interface do rato e colocar texto no form que va incrementando com cada clique, se alguem me podesse dar uma ajudinha ficaria agradecido

cumprimentos!

Share this post


Link to post
Share on other sites
pikax

tens varias formas de fazer isso, o que ja tentaste?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
JoãoCarreiro

como ja tinha dito eu sei muito pouco desta linguagem, e nao consegui muito ate agora, sem ser o objeto a mover, e o ponteiro do rato esta visivel no form. fora isso nao consegui mais

Share this post


Link to post
Share on other sites
pikax

podes usar uma label, depois quando a pontuacao mudar mudas o texto da labal:

labelPontuacao.Text = m_pontuacao.ToString();


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
thoga31

Como controlas a velocidade? Supostamente terás uma variável para isso. Logo, quando dás um clique, incrementas o seu valor.


Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

Que objecto é esse?

Quando dás um clique com o rato, tens de saber:

1) a actual posição do objecto

2) o tamanho do objecto (suponho que é constante)

3) onde o rato clicou.

Depois, verificas se a área onde o rato foi clicado está dentro da área do objecto.


Knowledge is free!

Share this post


Link to post
Share on other sites
JoãoCarreiro

o objeto é uma simples imagem png que esta constantemente a "passear" dentro do form, e ao enbater numa parede prossegue o caminho oposto por isso a posiçao é variavel o que me esta a dificultar um pouco

Share this post


Link to post
Share on other sites
pikax

como e' que estas a incrementar a posicao da imagem?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
thoga31

o objeto é uma simples imagem png que esta constantemente a "passear" dentro do form, e ao enbater numa parede prossegue o caminho oposto por isso a posiçao é variavel o que me esta a dificultar um pouco

Dificulta em quê? Em vez de perguntares se a posição do rato está dentro do rectângulo com as coordenadas fixas [(0, 0); (30, 30)], perguntas se ele está dentro do rectângulo [(posição.x, posição.y), (posição.x + tamanho.x, posição.y + tamanho.y)]. Uma variável é um valor, a única diferença é que este varia.


Knowledge is free!

Share this post


Link to post
Share on other sites
HoudinY

Boas João experimenta meter isto no void update:

if (Mouse.GetState().LeftButton == ButtonState.Pressed) //Quando o botão é clicado
               {  if (Mouse.GetState().X < Player.X + Player.width) //Quando a posição X do botão é a mesma do objecto
                   {  if (Mouse.GetState().X > Player.X) //Quando a posição X do botão é a mesma do objecto
                       {    if (Mouse.GetState().Y < Player.Y + Player.height) //Quando a posição Y do botão é a mesma do objecto
                            {    if (Mouse.GetState().Y > Player.Y) //Quando a posição Y do botão é a mesma do objecto
                                   deltavelocity+=1; //Aumentar a variavel da velocidade do boneco com um valor à escolha
                            }
                       }
                   }
               }

Deve fazer o que queres :D

Edited by thoga31
GeSHi

To achieve victory we must mass our forces at the hub of all power and movement, the enemy's center of gravity.-Von Clausewitz

Share this post


Link to post
Share on other sites
JoãoCarreiro

Vou experimentar

edit: as variaveis player e deltavelocity nao estao definidas e estou a ter erro por isso, se me disseres onde as deva de definir secalhar consigo meter a funcionar

Edited by JoãoCarreiro

Share this post


Link to post
Share on other sites
HoudinY

player é a variável texture2d que já deves ter no ecrã a "passear" e deltavelocity é o incremento de velocidade no player, se for uma constante então não há necessidade de a criares.

eu crio-as após esta linha:

public class [nomedoteujogo] : Microsoft.Xna.Framework.Game


To achieve victory we must mass our forces at the hub of all power and movement, the enemy's center of gravity.-Von Clausewitz

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.