Miny - Zajímavosti a poznámky
Tento článek je součástí porovnání programovacích jazyků C#, Java a GameMaker při tvorbě klasických Min (MineSweeper) viz: -> Miny aneb porovnání programovacích jazyků C#, Java, GM
V C#
Vypnutí, programu v konstruktoru Formu
Pokud chcete vypnout program aniž by ještě skončil konstruktor okna -> aplikace neběží (v našem případě nepovede se nastavit rozměry či počet min).
Použijte:
Environment.Exit(-1);
Znovu vygenerování pole
V C# při použití tablelayoutu se celá aplikace nehorázně zaseká proto jsem použil Application.Restart(); jako nejjednoduší volbu. Nedoporučuji používat tablelayoutu k podobným účelům a při tvorbě her využít XNA FrameWork.
Čas
Klasicky timerem po 1000ms a v metodě se přičítá proměnná a ta se vypisuje v titlebaru. Kód v designeru (timer kalsicky přidáte jako komponentu na form a nastavíte mu vlastnosti v property záložce.
public System.Windows.Forms.Timer timer1; this.timer1 = new System.Windows.Forms.Timer(this.components); this.timer1.Interval = 1000; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); private void timer1_Tick(object sender, EventArgs e) { this.Text = "Hledač min " + ++this.time + "s"; }
Input dialog
Je volán s VisualBasicu.
using Microsoft.VisualBasic; int.Parse(Interaction.InputBox("Počet min? (menší než " + (x_length * y_length) + ")", "Hledač min", "5"));
V Javě
Čas
Použití swingového timeru.
Timer timer1 = new Timer(1000, this); timer1.start(); // při implementování u třídy ActionListeneru můžete metodu napsat takto. @Override public void actionPerformed(ActionEvent e) { this.setTitle("Hledač min " + ++GUI.time + "s"); }
Vytvoření nového pole min
V Javě jednoduše smažeme komeponenty, přidáme je znovu a překreslíme. GridLayout je rychlý a není problém s resizováním.
// smaže staré pole vytvoří nové a překreslí public void reloadMinesField(GUI gui) { gui.remove(mines_field); gui.addComponents(); gui.repaint(); gui.validate(); GUI.time = 0; }
Input dialog
Integer.valueOf(JOptionPane.showInputDialog(null, "Počet min? (menší než " + (x_length * y_length) + ")", "5"));
V GameMaker
Čas
Využijeme alarmu a budeme nastavovat room_caption.
V create inicalizujeme proměnnou time = 0 a nastavíme alarm[0] na room_speed (1x za vteřinu se spustí)
// alarm[0] time += 1; room_caption = "Hledač min " + string(time) + "s"; alarm[0] = room_speed;
Input dialog
get_integer("Šířka pole (max. 50)", 10);