Matematické Fórum

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

#1 03. 03. 2012 10:33

Tomas.P
Příspěvky: 648
Reputace:   22 
 

C# program

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:

Code:

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

  • (téma jako vyřešené označil(a) Tomas.P)

#2 03. 03. 2012 21:39 — Editoval RePRO (03. 03. 2012 21:58)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: C# program

Zdravím,
jednoduchým a přehledným způsobem (vytvoříme max. 3 události) jsem to teď udělal takto:

Code:

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));
        }
    }
}

Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#3 04. 03. 2012 10:17

Tomas.P
Příspěvky: 648
Reputace:   22 
 

Re: C# program

↑ RePRO:
Zdravím. Když spustím program Clicking, tak se mi žlutě označí řádek obrazek.Image = Image.FromFile(cesta); Předem děkuji za odpověď

Offline

 

#4 04. 03. 2012 13:50

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: C# program

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?


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#5 04. 03. 2012 15:47

Tomas.P
Příspěvky: 648
Reputace:   22 
 

Re: C# program

↑ RePRO:
Co bych měl udělat, aby se mi v levém dolním rohu obrazovky Test přičítalo v label1 skóre? Můj postup je nahradit zápis MessageBox.Show(skore.ToString());

Offline

 

#6 04. 03. 2012 15:52

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: C# program

Code:

label1.Text = skore.ToString();

Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#7 04. 03. 2012 19:38

Tomas.P
Příspěvky: 648
Reputace:   22 
 

Re: C# program

↑ RePRO:
Jak bych měl realizovat START/STOP? Předem děkuji za odpověď

Offline

 

#8 04. 03. 2012 20:00 — Editoval RePRO (04. 03. 2012 20:08)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: C# program

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:

Code:

        void tlac1_Klik(object sender, EventArgs e)
        {
            tlac1.Enabled = !tlac1.Enabled;
            tlac2.Enabled = true;
            casovac.Enabled = true;
        }

Druhá událost pro tlačítko STOP:

Code:

        void tlac2_Klik(object sender, EventArgs e)
        {
            tlac2.Enabled = !tlac2.Enabled;
            tlac1.Enabled = true;
            casovac.Enabled = false; 
        }

Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson