Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím
- vytvořte aplikaci WinForms či WPF, která bude na ploše hlavního okna obsahovat objekt, který bude náhodně měnit svoji pozici v případě ilustrace (video) je to objekt myši
- časové intervaly náhodné změny pozice myši zadejte v intervalu 100 – 1000ms, které budou měnitelné pomocí posuvníku v 10-ti úrovních
- hru spusťte a zastavte pomocí tlačítka START/STOP, který uvede „myš“ do pohybu
- v případě, že ukazatelem myši počítače najedete na obrázek myši začne se přičítat hodnota do políčka SCORE, která reprezentuje výherní hodnotu
http://www.youtube.com/watch?v=soO-IN_a … r_embedded
Můj postup:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Projekt
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void label1_Click(object sender, EventArgs e)
{
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
}
private void pictureBox1_Click(object sender, EventArgs e)
{
Point[] pictureBox1 = new Point[30];
Random rand = new Random(unchecked((int)DateTime.Now.Ticks));
for (int i = 0; i < 30; i++)
{
pictureBox1[i].X = rand.Next(this.ClientSize.Width);
pictureBox1[i].Y = rand.Next(this.ClientSize.Height);
}
}
}
}Offline
Zdravím,
jednoduchým a přehledným způsobem (vytvoříme max. 3 události) jsem to teď udělal takto:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Clicking
{
public class Test : Form
{
private Random souradnice;
private PictureBox obrazek;
private Timer casovac;
private TrackBar posuvnik;
private int skore;
public Test()
{
InitializeComponent();
// Vytvoříme náhodu
souradnice = new Random();
// Vytvoříme a nastavíme posuvník
posuvnik = new TrackBar();
posuvnik.Minimum = 0;
posuvnik.Maximum = 10;
posuvnik.Scroll += new EventHandler(posuvnik_Zmena);
// Vytvoříme a nastavíme časovač
casovac = new Timer();
casovac.Enabled = true;
casovac.Tick += new EventHandler(casovac_Tik);
// Vytvoříme a nastavíme obrázek
obrazek = new PictureBox();
string cesta = @"Test.png";
obrazek.Image = Image.FromFile(cesta);
obrazek.Click += new EventHandler(obrazek_Klik);
// Inicializujem skóre
skore = 0;
// Vložíme komponenty na formulář
Controls.Add(obrazek);
Controls.Add(posuvnik);
}
void posuvnik_Zmena(object sender, EventArgs e)
{
if (posuvnik.Value != 0) casovac.Interval = 100 * posuvnik.Value;
}
void obrazek_Klik(object sender, EventArgs e)
{
skore++;
MessageBox.Show(skore.ToString());
}
void casovac_Tik(object sender, EventArgs e)
{
obrazek.Location = new Point(souradnice.Next(ClientSize.Height - obrazek.Height), souradnice.Next(ClientSize.Width - obrazek.Width));
}
}
}Offline
Zdravím Tomáši,
tam máš nejspíš špatnou cestu k obrázku. Obrázek vlož do projektu, přímo do složky debug. Je pravdou, že s cestami jsou někdy potíže. Pokud nepomohlo, co Ti vypisuje žlutá hláška?
Offline
Realizoval bych to tak, že v konstruktoru formuláře necháme časovač vyplý (není nutné).
Potom si uděláme dvě tlačítka (START a STOP) a uděláme si k nim události Click. Tlačítka můžeme normálně přetáhnout z Toolboxu na náš formulář (nebo si to udělat programově - ručně).
Navíc tlačítko START může být zamlžené (nedostupné), pokud časovač běží a naopak tlačítko STOP bude zamlžené (nedostupné), pokud časovač nepoběží. Nehledat v tom vědu...
První událost pro tlačítko START:
void tlac1_Klik(object sender, EventArgs e)
{
tlac1.Enabled = !tlac1.Enabled;
tlac2.Enabled = true;
casovac.Enabled = true;
}Druhá událost pro tlačítko STOP:
void tlac2_Klik(object sender, EventArgs e)
{
tlac2.Enabled = !tlac2.Enabled;
tlac1.Enabled = true;
casovac.Enabled = false;
}Offline