1 00:00:00,000 --> 00:00:00,260 2 00:00:00,260 --> 00:00:02,980 >> SPEAKER 1: Vediamo ora scriviamo un programma che interagisce in qualche modo con il mio mouse. 3 00:00:02,980 --> 00:00:06,150 In particolare, cerchiamo di Instantiate, o creare una finestra. 4 00:00:06,150 --> 00:00:09,700 E poi ascoltiamo, per così dire, all'interno di tale finestra per clic del mouse. 5 00:00:09,700 --> 00:00:12,940 E non appena si rileva un clic del mouse, cerchiamo di stampare con printf l' 6 00:00:12,940 --> 00:00:17,830 coordinate x comma y di quel mouse scegliere, rispetto a quella finestra. 7 00:00:17,830 --> 00:00:18,880 >> Qui andiamo. 8 00:00:18,880 --> 00:00:24,670 Facciamo prima includono gevents.h, che è un altro file di intestazione nella Stanford 9 00:00:24,670 --> 00:00:27,670 biblioteca portatile che si riferisce agli eventi grafiche. 10 00:00:27,670 --> 00:00:33,480 Facciamo includono inoltre gwindow.h, che contiene le funzioni relative a Windows. 11 00:00:33,480 --> 00:00:37,390 Vediamo ora dichiariamo principale nel solito modo. 12 00:00:37,390 --> 00:00:39,680 >> E andiamo ora un'istanza di quella finestra. 13 00:00:39,680 --> 00:00:40,830 Gwindow - 14 00:00:40,830 --> 00:00:42,180 che chiameremo finestra - 15 00:00:42,180 --> 00:00:44,710 uguale newGwindow. 16 00:00:44,710 --> 00:00:49,150 E io specificare un po 'arbitrariamente un larghezza di 320 pixel e un'altezza di 17 00:00:49,150 --> 00:00:51,460 240 pixel. 18 00:00:51,460 --> 00:00:54,380 >> Ora dobbiamo continuare ad ascoltare per eventi del mouse, così 19 00:00:54,380 --> 00:00:56,020 dire, all'interno di tale finestra. 20 00:00:56,020 --> 00:00:59,450 Ora eventi possono includere click o trascina o movimenti. 21 00:00:59,450 --> 00:01:01,400 Ma per ora ci concentreremo solo su scatti. 22 00:01:01,400 --> 00:01:05,740 Io vado a indurre intenzionalmente un ciclo infinito con un costrutto mentre, 23 00:01:05,740 --> 00:01:08,770 semplicemente in modo che questo programma viene eseguito per sempre, o almeno fino a quando clicco sul 24 00:01:08,770 --> 00:01:10,450 X nell'angolo in alto a destra. 25 00:01:10,450 --> 00:01:13,670 >> Per farlo, facciamolo while true. 26 00:01:13,670 --> 00:01:16,900 Quindi all'interno di tale ciclo, lascia primo assegno per l' 27 00:01:16,900 --> 00:01:18,430 evento mouse come segue. 28 00:01:18,430 --> 00:01:21,200 Ci dichiariamo una GEvent, per così dire. 29 00:01:21,200 --> 00:01:22,920 >> Chiameremo l'evento variabile. 30 00:01:22,920 --> 00:01:27,740 E noi andremo a memorizzare in quanto il valore di getNextEvent ritorno, passando 31 00:01:27,740 --> 00:01:31,970 in una costante speciale, che da convenzione è scritto in tutte le protezioni, 32 00:01:31,970 --> 00:01:34,060 chiamato MOUSE_EVENT. 33 00:01:34,060 --> 00:01:36,800 In altre parole, da qualche parte in questa Libreria portabile Stanford, c'è un 34 00:01:36,800 --> 00:01:39,120 costante chiamata MOUSE_CLICED. 35 00:01:39,120 --> 00:01:43,040 E c'è una funzione definita che è chiamato getNextEvent, il cui scopo 36 00:01:43,040 --> 00:01:44,360 la vita è di fare esattamente questo. 37 00:01:44,360 --> 00:01:48,330 Ascoltate, e poi quando si sente uno, restituisce l'evento successivo che è 38 00:01:48,330 --> 00:01:50,500 stato innescato dal mouse dell'utente. 39 00:01:50,500 --> 00:01:53,710 >> Ora controlliamo se tale evento è nullo. 40 00:01:53,710 --> 00:01:57,400 Perché non è nullo, e che siamo noi qualcosa di realmente sentito dal 41 00:01:57,400 --> 00:02:00,450 il mouse dell'utente, stiamo andando a procedere per verificare ora che tipo 42 00:02:00,450 --> 00:02:03,001 di evento che è stato. 43 00:02:03,001 --> 00:02:09,050 Se getEventType, superando un evento come argomento, uguale uguale 44 00:02:09,050 --> 00:02:14,070 MOUSE_CLICKED, che sembra essere un specifico tipo di eventi, che è solo 45 00:02:14,070 --> 00:02:17,110 un'altra costante dichiarata nel Libreria portabile Stanford. 46 00:02:17,110 --> 00:02:21,400 Ora, come promesso, andiamo ora stampare il coordinate di quel clic del mouse. 47 00:02:21,400 --> 00:02:26,000 Printf "% .0 f. 48 00:02:26,000 --> 00:02:28,340 >> In altre parole, ho intenzione di stampare un valore in virgola mobile. 49 00:02:28,340 --> 00:02:30,240 Ma io non voglio vedere niente dopo il punto decimale. 50 00:02:30,240 --> 00:02:32,260 Quindi io specificare .0. 51 00:02:32,260 --> 00:02:36,380 Comma,% .0 f per la coordinata y pure. 52 00:02:36,380 --> 00:02:38,000 Backslash n vicino preventivo. 53 00:02:38,000 --> 00:02:41,260 >> E ora veniamo alla coordinata x di tale evento. 54 00:02:41,260 --> 00:02:43,530 Questa è la coordinata x del clic del mouse. 55 00:02:43,530 --> 00:02:46,990 E poi andiamo y della manifestazione, che è la coordinata y 56 00:02:46,990 --> 00:02:48,170 del clic del mouse. 57 00:02:48,170 --> 00:02:50,920 >> Vediamo ora salvare, compilare, ed eseguire questo programma. 58 00:02:50,920 --> 00:02:54,160 E quando lo faccio, che dovrebbe essere il caso che non importa dove clicco all'interno 59 00:02:54,160 --> 00:02:58,850 i confini di questo 320 per 240 pixel finestra, dovrei poi vedere sul mio 60 00:02:58,850 --> 00:03:03,570 finestra della console x virgola coordinate y dove ho cliccato. 61 00:03:03,570 --> 00:03:05,430 Fai click. 62 00:03:05,430 --> 00:03:07,890 . / Click. 63 00:03:07,890 --> 00:03:09,630 E c'è quella finestra avevamo previsto. 64 00:03:09,630 --> 00:03:14,300 >> Ora vorrei fare clic all'incirca in cima nell'angolo sinistro della finestra. 65 00:03:14,300 --> 00:03:18,150 Nel mio schermo della console, vedo che capita di cliccare su coordinata x sette 66 00:03:18,150 --> 00:03:19,700 e coordinata y sette. 67 00:03:19,700 --> 00:03:22,840 Vediamo ora cliccate all'incirca nel fondo alto a destra della finestra. 68 00:03:22,840 --> 00:03:27,890 E mi sembra di aver cliccato su coordinate pixel 314, 229. 69 00:03:27,890 --> 00:03:30,330 >> Passiamo ora fare nell'angolino in basso a sinistra. 70 00:03:30,330 --> 00:03:32,430 E vedo 6, 233. 71 00:03:32,430 --> 00:03:35,680 E nell'angolo in alto a destra, 305, 4. 72 00:03:35,680 --> 00:03:38,810 >> In altre parole, sembra essere il caso che l'angolo superiore sinistro della 73 00:03:38,810 --> 00:03:40,655 nostra finestra è 0, 0. 74 00:03:40,655 --> 00:03:46,080 E l'angolo in basso a destra della mia finestra è di 320, 240. 75 00:03:46,080 --> 00:03:48,990 In altre parole, avrei visto Proprio quei valori, avevo appena 76 00:03:48,990 --> 00:03:52,180 perfettamente allineate il cursore del mouse in ciascuna di tali angoli. 77 00:03:52,180 --> 00:03:54,960 Questo è vero in generale in grafica programmazione, sia che si utilizzi l' 78 00:03:54,960 --> 00:03:58,860 Libreria portabile Stanford o la maggior parte qualsiasi altri, per cui noi rappresentiamo la parte superiore 79 00:03:58,860 --> 00:04:03,050 angolo come 0, 0, e la parte inferiore nell'angolo destro come la virgola larghezza 80 00:04:03,050 --> 00:04:06,810 altezza, utilizzando numeri positivi, anche se è basso a destra. 81 00:04:06,810 --> 00:04:08,615