olen nyt oppinut jo c++ perusteet, luokista hieman ja SDL:n käyttöä.
miten sellainen onnistuisi että kun painaa näppäintä niin ohjelma ottaa sen vastaan ja "kirjoittaa" tekstinpätkän?
Tarvitsisin tätä peliin, sillä olis helpompi sitten koodit kirjoitella. Eli jos painetaan vaikkapa F2 niin ohjelma "kirjoittaa" vaikka koodi "elkkujalisaa"
(x1,y1) (x2,y1)
NAPPI
(x1,y2) (x2,y2)if(mouse_x>x1 && mouse_x<x2 && mouse_y>y1 && mouse_y<y2)
Print();x1, x2, y1, y2 ovat napin koordinaatit. mouse_x:n ja mouse_y:n saat jollain GetMousePos tyylisellä funktiolla.
Taisi temu92 hakea näppäimistön käsittelyä. Lukaiseppas putkan tuto.
Jaa. Sen siitä saa, kun lukee huolimattomasti. Tosiaan, SDL oppaan 3. opassarjassa löytyy infoa tuosta: https://www.ohjelmointiputka.net/oppaat/opas.
Ja jos nyt kirjoittamisella tarkoitit sitä, että simuloisit näppäimistöä (eli pitäisi saada toiseen ohjelmaan kirjoitettua tuo), niin taannoisesta aiheesta löytyy tietoa WinAPI:n keybd_event-funktiosta. SDL itsessään ei osaa simuloida napinpainalluksia.
juuri sitä hainkin. muistin tuollaisen aiheen mutta en ollut varma nimestä
EDIT: Muuten, tuo antamasi aiheen kieli on delphi. Toimiiko se myös c++ kielessä ja miten sitä käytetään?
Koska olen vielä n00b c++ kanssa niin voisiko joku väsätä esimerkin
Kyllä se toimii aivan samalla tavalla. WinAPI toimii aina samalla tavalla. #include <windows.h>. Kommentit varmaankin osaat itse poistaa koodista.
#include <windows.h>
keybd_event(4C, 0, 0, 0);
keybd_event(45, 0, 0, 0);
keybd_event(41, 0, 0, 0);
keybd_event(56, 0, 0, 0);
keybd_event(45, 0, 0, 0);
//---
keybd_event(4D, 0, 0, 0);
keybd_event(45, 0, 0, 0);
//---
keybd_event(41, 0, 0, 0);
keybd_event(4C, 0, 0, 0);
keybd_event(4F, 0, 0, 0);
keybd_event(4E, 0, 0, 0);
keybd_event(45, 0, 0, 0);
tälläsen tein. ei toimi. mikä vikana?
No se, mistä kääntäjä valittaa. Opettele käyttämään (0xFC) heksanumeroita tai ennemmin käytä VK_NAPPI-vakioita ja 'Z'-kirjaimia.
0x alkuiset ovat heksanumeroita, esim 0x4E
tässä
http://www.jokejewel.org/error.PNG
miten nuo heksanumerot rakentuu? oon ihan pihalla koko systeemistä
Laittamalla siihen 0x eteen, kuten tässä on jo pari kertaa sanottu. Mutta käytä nyt ihmeessä kirjaimia kuten 'N' ja valmiita vakioita kuten VK_ESCAPE.
#include <windows.h>
keybd_event(L, 0, 0, 0);
keybd_event(E, 0, 0, 0);
keybd_event(A, 0, 0, 0);
keybd_event(V, 0, 0, 0);
keybd_event(E, 0, 0, 0);
//---
keybd_event(M, 0, 0, 0);
keybd_event(E, 0, 0, 0);
//---
keybd_event(A, 0, 0, 0);
keybd_event(L, 0, 0, 0);
keybd_event(O, 0, 0, 0);
keybd_event(N, 0, 0, 0);
keybd_event(E, 0, 0, 0);
tässä
'Hipsut' kirjaimille.
temu92 kirjoitti:
miten nuo heksanumerot rakentuu?
https://www.ohjelmointiputka.net/oppaat/opas.
Metabolix kirjoitti:
'Hipsut' kirjaimille.
ei toimi
temu92 kirjoitti:
Tarvitsisin tätä peliin, sillä olis helpompi sitten koodit kirjoitella. Eli jos painetaan vaikkapa F2 niin ohjelma "kirjoittaa" vaikka koodi "elkkujalisaa"
Omaan peliin? Ei ole järkeä tehdä koodeja jotka on helppo kirjoittaa, koodit ovat sen takia monimutkaisia ettei niitä kirjoittaisi vahingossa.
Ja mikset käyttänyt niitä heksalukuja kuten neuovottiin?
Siinä koodi:
keybd_event(0x4C, 0, 0, 0);
keybd_event(0x45, 0, 0, 0);
keybd_event(0x41, 0, 0, 0);
keybd_event(0x56, 0, 0, 0);
keybd_event(0x45, 0, 0, 0);
//---
keybd_event(0x4D, 0, 0, 0);
keybd_event(0x45, 0, 0, 0);
//---
keybd_event(0x41, 0, 0, 0);
keybd_event(0x4C, 0, 0, 0);
keybd_event(0x4F, 0, 0, 0);
keybd_event(0x4E, 0, 0, 0);
keybd_event(0x45, 0, 0, 0);
Ja kyllä varmasti toimii hipsuilla. Oma on vikasi, jos et suostu osaamaan.
en tee omaan peliin vaan GTA:han
Aihe on jo aika vanha, joten et voi enää vastata siihen.