C# - CronÓmetro

xihhhh o que foz-te pedir!
bem eu digo os passos e depois programas tu... espero que saibas!

tens um controlo que se chama timer, usas esse controlo.
nas propriedades acerta para que o timer funcione a 1segundo penso que é por 1000 numa propriedade do qual nao me recordo do nome.
depois cria 3 variaveis globais: horas, minutos e segundos do tipo INT e põe-nas já com o valor 0(por defeito).
Clicla duas vezes no timer(controlo que adicionas-t) e lá dentro poes o codigo onde vais estar sempre a adicionar 1 segundo a variavel "segundos" depois tens que fazer verificações do tipo:

segundos++;

if(segundos = 60)
{
segundos = 0;//repor os segundos a 0
minutos++; //adicionar +1 aos minutos
}

if(minutos = 60)
{
minutos = 0;
horas++;
}
ainda dentro do codigo do timer(já no fim) pões isto para te mostrar valores.
textbox1.text=horas+":"+minutos+"."+segundos;

Não te esqueças de nas propriedades do Timer por enabled a True para ele arrancar mal inicie o Form


Espero que ajude.
 
Brigadão pelo tempo desperdiçado a explicar :) vou avançar para o cronómetro e depois digo alguma coisa. ;)
 
Última edição:
privatevoid timer1_Tick(object sender, EventArgs e)
{
int hora=0, minuto=0, segundo=0;
segundo++;
if (segundo == 60)
{
segundo = 0;//repor os segundos a 0
minuto++; //adicionar +1 aos minutos
}
if (minuto == 60)
{
minuto = 0;
hora++;
}
textBox1.Text = hora + ":" + minuto + ":" + segundo;
}

criou a textbox e mostrou o cronómetro inicializado no entanto apenas altera uma vez de 0:0:0 para 0:0:1.. pork será? é preciso criar um ciclo? tentei usar um do..while mas kd corria encravava :S
 
Boas!

Tens que meter o timer.enabled= true para ele repetir esse codigo sempre.
No entanto cuidado que as variaveis horas, minutos e segundos são variaveis locais, logo se não estou em erro cada vez que entra nesse método ela mete-as a 0. Dai só veres o relogio andar 1 segundo. ;)

Espero ter ajudado!
 
nem pensei nisso que horror! o segundo que via avançar era por causa do segundo++ logo nc pasava dali lol.. bem vou modificar e ver o resto ;)

ainda n tiv a ver o prog mas agr surg o prob.. s tenho d inicializar as variáveis a 0 cm o faço fora da operação do cronómetro? a minha noobice a vir ao d cima lol
 
Última edição:
hummm... podes por exemplo iniciar as variaveis no evento load do form (duplo click em cima do form) e ai iniciar o timer tambem. Como o evento load ocorre só quando o form é carregado, as variáveis nunca mais vao ficar a zero e com isso em principio resolves o teu problema.
 
isso fazes no topo do codigo logo antes do primeiro invento e escreves:
int hora=0, minuto=0, segundo=0;
Assim tens 3variaveis do tipo int ambas globais e já predefinidas com o valor 0.

Para começar o cronometro fazes um botão e la dentro pões:
hora=0, minuto=0, segundo=0; //para iniciares as variaveis
timer1.start();//para iniciar o cronometro

para o parares pões nouto botão:
timer.stop();//para parar o cronometro


O timer funciona da seguinte maneira:
repete aquele codigo posto em "privatevoid timer1_Tick(object sender, EventArgs e)" infititamente em intervalos de tempo até ser mandado parar.
 
Última edição:
Sem querer fazer ficar mal quem gentilmente postou várias formas para implementar o dito cronómetro...
Se estás a usar .NET 2.0 (ou superior), existe a classe System.Diagnostics.Stopwatch, que trata disso tudo de forma simples. A MSDN é tua amiga.
Fazes Start() no início, e com um Timer apenas actualizas os controlos que mostram o tempo com a propriedade Elapsed.
É mais simples, mais eficiente e mais preciso (não sei se isso é um problema, mas não faz mal nenhum).
 
Última edição:
Sim claro também é uma opção no entanto as outras resoluções que os nossos colegas postaram também são úteis e muito pois acaba por ser uma maneira de fazer um cronómetro apercebendo-nos melhor de como ele funciona em linha de código ;) obrigado a todos os que têm respondido, já tenho o cronómetro funcional vou agora passar á próxima fase do programa que vai ser o jogo das diferenças ;)
 
Sim claro também é uma opção no entanto as outras resoluções que os nossos colegas postaram também são úteis e muito pois acaba por ser uma maneira de fazer um cronómetro apercebendo-nos melhor de como ele funciona em linha de código ;) obrigado a todos os que têm respondido, já tenho o cronómetro funcional vou agora passar á próxima fase do programa que vai ser o jogo das diferenças ;)

Isso é muito facil de fazer se kixeres ajuda diz... 3linhas de código e ta feito...
 
Já fiz a part d clicar nas pictures ke tapam as supostas imagens ke estao por tras mas ainda n pensei sobr cm comparar as 2 e s estiverem incorretas volta a colocar pictures a tapar as imagens, o meu stor dise para fazer um metodo aparte para iso..
 
Já fiz a part d clicar nas pictures ke tapam as supostas imagens ke estao por tras mas ainda n pensei sobr cm comparar as 2 e s estiverem incorretas volta a colocar pictures a tapar as imagens, o meu stor dise para fazer um metodo aparte para iso..

Boas,

Isto é so uma ideia, não sei se a melhor.

Cada imagem tem uma propriedade "Tag", porque nao atribuires valores as imagens (tipo 1,2,3)
e cada par de imagens correspondia um valor. Cada vez que destapavas ias compara os valores da tag, se fossem iguais... Voila ;)
 
boa ideia já estive a pesquisar isso das tags e foi fácil encontrar. Associei os valores tal como disses-te a cada par de imagens correctas e pus essa atribuicao de valors ás imagens quando clicamos no botão "start game".. agora como posso fazer um random das imagens ? a minha atribuicao d valors ás tags foi feita o valor um para a picture A e B e o 2 para o C e D por ai adiante.. percebes? Logo precisamos de uma instrução que misture as imagens.

Também queria usar uma váriavel para guardar a tag da primeira imagem seleccionada para comparar á segunda mas a operação que faço dá erro, eu faço assim: primeira=A_picturebox.Tag;
Pensei ke guardava o valor que tinha atribuido á Tag mas devo tar errado..
 
Última edição:
Humm... Quanto ao erro que te dá, penso que seja por a tag ser um object e a comparação directa de object's não é o que pretendes. o que deves fazer é um cast da tag para inteiro (int)picturebox1.tag ==(int)picturebox2.tag e com isso a comparacao ja deve ficar correcta (ou para afectar fazes tipo int x = (int)picturebox2.tag). Quanto à melhor maneira de fazeres a distribuição das imagens tens que dizer como as tens guardadas. Tens um array de pictures? Tens "n" controlos pictureBox?

Cumps.
 
eu tenho um picturebox para cada uma das imagens (4 x 4) existe algum codigo de random? vou alterar o codigo entao e ja t digo s ta a funcionar bem ;)

privatevoid A_picturebox_Click(object sender, EventArgs e)
{
if (count == 2) count = 0;
A_picturebox.Visible =
false;
if (count=0){
primeira = (
int)A_picturebox.Tag;
}
elseif(count=1){
/*comparacao para determinar se as boxs seleccionadas estao corretas (ficam visiveis) ou nao*/
if (primeira != (int)A_picturebox.Tag)
{
A_picturebox.Visible =
true;
}
}
count++;
}

como posso dizer para a picture ke está guardada na primeira passar a ser visivel tambem?
 
Última edição:
Olha crias 2 paineis um tem a imagem original onde não mexes e o outro fazes o seguinte:´
Apos o criares poe como fundo a tua imagem depois lá dentro (onde existem os erros referentes a outra imagem) pões por cada um, um painel em cima e por cada painel desses, poes o fundo transparente.
Cada vez que clicares no painel pai, vai tirar pontos, cada vez k cliques num painel dos que cobrem a imagem vai dar pontos e acrescenta uma imagem de fundo neste(faz em photoshop uma circunferenci mesmo com o pincel para dar estilo, mas faz em fundo transparente e grava em PNG ou BMP nao tnho a certeza, testa pois nao sei qual dos 2existe para gravar no photoshop, se houver os 2 melhor!)...
Assim é muito mais facil e fazes milhões com 2 linhas de codigo
 
Última edição:
hmm não consegui perceber bem a tua ideia.. estavas a dizer para deixar as imagens que são para acertar e apenas mexer nas pictures que as vao tapar certo? eu neste momento estou a fazer asim e a mexer nas pictures que tapam as imagens mm k sao para descobrir..

vai existir um painel raiz que tem as imagens que são para adivinhar as suas posições e tem outro painel por cima que tapa essas imagens certo? no entanto ese segundo painel tem 2 pictures uma em cima da outra e uma delas transparente é isso?
 
Última edição:
Cria 2 paineis, um com o background da imagem original(sem diferenças), outro com a imagem diferente.
No painel com a imagem que cotem as diferenças adicionas um painel (com o background transparente),1 por diferença, em cima de cada diferença...
Tipo:
Painel1(imagem original)
Painel2(imagem com diferenças)
__ painel3(dentro do painel2 em cima da diferença 1)
__painel4(dentro do painel2 em cima da diferença 2)
__painel5(dentro do painel2 em cima da diferença 3)
__painel6(dentro do painel2 em cima da diferença 4)
(...)

No painel2 no envento onClick fazes a perda de pontos
Cada vez que clicares no painel3,4,5,6(...) fazes com que este ganhe um circulo vermelho em background e o aumento de pontos...

a ideia é adicionar um objecto que sobreponha a imagem(com diferenças) e ganhe um circulo e dar pontos...
Não te esqueças de por enable=false cada vez que clicares no painel3,4,5,6(...)
 
Última edição:
o meu stor está a ensinar nos a mexer com class's diz k tornase mt mais facil programar os botões e descobrir se os 2 escolhidos tão certo ou errados.. tou a tt nese método. vou experimentar usar ese método também para resolver o problema de pontos no jogo ;)
 
Back
Topo