Zkouška 16. 2. 16:00

Janoro at 2009-02-16 23:58:59

Vezmu to zkrátka: Naprogramovat hru logik - pěkně s grafický rozhraním, barvičky se musí vykreslovat jako plné kruhy, uprostře nich číslo barvy, které označuje uživatel. Při hraní uživatel hádá barvy a každý jeho krok se zobrazuje v podobě jakési skrolovatelné historie nahoře ve Formu. Historie musí být zobrazitelná celá.

Úspěšnost: 0 :-)

Anonymous at 2009-02-17 02:58:23

Bylo povoleno pouzivat graficke navrhovatko?

SonicTh at 2009-02-17 10:03:50

Bylo. Take bylo mozno si vybrat mezi WinForms a WPF.

PJ

Donarus at 2009-02-17 14:00:26

no pokud byla uspesnost 0 tak se nejak zvlast nedivim :)

Medved at 2009-02-18 00:44:44

A v čem byl problém? Hrací plochu máte minimálně ve WPF hotovou za hodinu a algoritmicky to je prace na 10 minut, ne? Tak snad jen ta historie. Nakreslit elipsu a dovnitř jedno číslo hádám problém nebyl.

Anonymous at 2009-02-19 10:39:13

A jak nakreslim tu elipsu s cislem ? :oops:

Medved at 2009-02-19 22:03:09

Zvlast elipsu a zvlast to cislo. Ve WPF to vypada asi takhle

<Canvas>
<Ellipse Canvas.Top="0" Canvas.Left="0" Width="5" Height="5" />
<Label Canvas.Top="0" Canvas.Left="0">1</Label>
</Canvas>

Akorat teda si to musis nejak pojmenovat a to cislo pak menit v kodu behind podle te barvy...

Anonymous at 2009-02-19 22:41:59

A jak se to dela jen ve winforms ?

Anonymous at 2009-02-20 12:56:34

Návštěvník wrote:A jak se to dela jen ve winforms ?

Napriklad takhle:

       Font font = new Font(FontFamily.GenericSansSerif, 15f);

        public void nakresli_kolecko(Graphics g, Color barva, int hodnota, int x, int y)
        {
            g.FillEllipse(new SolidBrush(barva), new Rectangle(x, y, 50, 50));
            g.DrawString(hodnota.ToString(), font, new SolidBrush(Color.Black), new PointF(x + 15, y + 12));
        }

kde Graphics se se ziska z PaintEventArgs u Paint metody formu..

Anonymous at 2009-02-20 13:57:33

A jak to reda presne zavolam ?

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            nakresli_kolecko(//co mam sem napsat ?
        }

        Font font = new Font(FontFamily.GenericSansSerif, 15f);

        public void nakresli_kolecko(Graphics g, Color barva, int hodnota, int x, int y)
        {
            g.FillEllipse(new SolidBrush(barva), new Rectangle(x, y, 50, 50));
            g.DrawString(hodnota.ToString(), font, new SolidBrush(Color.Black), new PointF(x + 15, y + 12));
        }
    }
}
svick at 2009-02-20 15:41:53

Návštěvník wrote:A jak to reda presne zavolam ?

Musíš ji zavolat v event handleru na událot Paint. Třeba takhle:

using System.Windows.Forms;
using System.Drawing;

namespace WinApp
{class Form1 : Form{public Form1(){Paint += new PaintEventHandler(Form1_Paint);}
void Form1_Paint(object sender, PaintEventArgs e){nakresli_kolecko(e.Graphics, Color.Blue, 5, 0, 0);}
Font font = new Font(FontFamily.GenericSansSerif, 15f);
public void nakresli_kolecko(Graphics g, Color barva, int hodnota, int x, int y){g.FillEllipse(new SolidBrush(barva), new Rectangle(x, y, 50, 50));g.DrawString(hodnota.ToString(), font, new SolidBrush(Color.Black), new PointF(x + 15, y + 12));}
static void Main(){Application.Run(new Form1());}}
}
Anonymous at 2009-02-20 16:12:11

Diky.
A jeste jak poznam podle

string s = "Blue";

toho stringu ze mam pouzit Brushes.Blue ?
A nemislym to delat podle switche. Protoze switchovat vsechny barvy se mi fakt nechce.

Anonymous at 2009-02-20 17:11:01

Návštěvník wrote:Diky.
A jeste jak poznam podle

string s = "Blue";

toho stringu ze mam pouzit Brushes.Blue ?
A nemislym to delat podle switche. Protoze switchovat vsechny barvy se mi fakt nechce.

Zkus pouzit metodu Color.FromName(s);

Anonymous at 2009-02-20 19:27:01

Dekuji :)