Anonymní profil Honza – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Honza – Programujte.comAnonymní profil Honza – Programujte.com

 

Příspěvky odeslané z IP adresy 193.84.36.–

8ndra
.NET › c# simulace stisku klávesy
23. 11. 2012   #167405

Ahoj, mam hru kde se pohybuji pomocí šipek a chci tam přidat "nápovědu", když stisknu klávesu [H], tak chci aby se mi opakovala metoda Vyres a každý krok byl zpožděný o 20ms. Mám to řešeno takhle:

 public static bool pomoc = false;  //zjistuje, jestli chci pomoc
        public static bool ZpracujPohyb(Keys tlacitko)
        {
            // promenna vyuzita pro ulozeni vysledku pohybu (zda jsme v cili ci ne)
            bool vysledek = false;
              
            // na zaklade stisknuteho tlacitka proved danou operaci

            if (!pomoc)
            {
                switch (tlacitko)
                {


                    case Keys.Up:
                        vysledek = Bludiste.JdiNahoru();
                        break;
                    case Keys.Down:
                        vysledek = Bludiste.JdiDolu();
                        break;
                    case Keys.Left:
                        vysledek = Bludiste.JdiVlevo();
                        break;
                    case Keys.Right:
                        vysledek = Bludiste.JdiVpravo();
                        break;
                    case Keys.H:
                        vysledek = false;
                        pomoc = true;
                        break;


                }
                // na zaver vratime vysledek pohybu
            }  else {
                
                SendKeys.Send("k");           //simulace klavesy
                vysledek = Bludiste.Vyres();
                Thread.Sleep(20);
                
                
                
                } 
            return vysledek;
        }

myšleno je to tak, že dokud mačkám šipky, tak se pohybuji podle jejich směru, když zmáčku H, tak se mi spustí režim nápovědy a bude se mi každý krok metody Vyres zobrazovat. Takhle jak to mám, tak ta nápověda jede, ale zobrazí se mi až výsledek. Když zmáčknu šipku, zobrazí se mi normálně pohyb. Metoda Vyres je řešena pomocí metod JdiVlevo, JdiVpravo...

Když smažu tu simulaci klávesy SendKeys.Send("k"); tak mi to po stisku jakýkoli klávesy jede jak chci, myslel jsem, že tou simulací to prostě nebude čekat až něco zmáčknu a zmáčkne se to samo

Prosím o nějaký nápad, kdyby to chtěl někdo zkoumat ví, rád pošlu celý kód, myslím, že takhle na webu je to nepřehledný. Děkuju, 8ndra.

Honza
.NET › hodnota proměnné podle vstupu
1. 11. 2012   #165714

Ahoj, začínám v c# a nějak jsem narazil na console.beep, tak jsem si s tim hrál a chtěl sem počítač naučit skákal pes, to se mi nakonec povedlo, ale teď bych to chtěl udělat pěkně, pak možná aby hrál podle vstupu co napíšu, zatim píšu tóny do stringu. Nejdřív jsem si uložil frekvence tónů do int, a pak do stringu noty jak jdou za sebou. Potom jsem udělal cyklus, který by měl projet celý string a přehrávat tóny:

 static void Main(string[] args)
        {
           // int i;
           // for(i=0; i<200; i++)
            //{

              //  Console.WriteLine((char)i + "[" + i + "] ");
           // }

            Console.WriteLine();
            Console.WriteLine();
           
           
            int c = 262;
            int d = 294;
            int e = 330;
            int f = 349;
            int g = 392;
            int a = 440;
            int h = 494;
            int c2 = 524;
            int p = 38;
            string pes = "ggepggepggaggf"; 
            int delka = pes.Length;
            int t;
            Console.WriteLine("hraju");

            for (t = 0; t < delka; t++)
            {
                int ton = Convert.ToChar(pes[t]);
                Console.Beep(ton, 500);
                Console.Write("t = " + t);
                Console.WriteLine(" " + ton);
                
            }

            Console.WriteLine("konec");
            Console.ReadKey(); 
        }
    }

jenže teď mi při písmenu g hraje frekvenci podle ascii kódu g, takže nějakých 103, místo hodnoty proměnné g = 392. Nevím jak mu vysvětlit, že nemá brát to g jako písmeno, ale jako proměnnou.

Moc děkuju za nakopnutí kupředu.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý