Commit 0ed3f14864fcd819a7f8ee61d54636e5c904a9c9
1 parent
0d065eeb
terminé !
Showing
34 changed files
with
63 additions
and
34 deletions
Show diff stats
games/ninvaders/ninvaders-0.1.1/ChangeLog renamed to games/ninvaders/ChangeLog
games/ninvaders/ninvaders-0.1.1/README renamed to games/ninvaders/README
games/ninvaders/ninvaders-0.1.1/aliens.c renamed to games/ninvaders/aliens.c
games/ninvaders/ninvaders-0.1.1/aliens.h renamed to games/ninvaders/aliens.h
games/ninvaders/ninvaders-0.1.1/arduino.c renamed to games/ninvaders/arduino.c
@@ -118,13 +118,11 @@ void stop(struct libusb_config_descriptor *config_desc, libusb_device_handle *ha | @@ -118,13 +118,11 @@ void stop(struct libusb_config_descriptor *config_desc, libusb_device_handle *ha | ||
118 | 118 | ||
119 | void sendData(int endpoint_id, uint8_t data, libusb_device_handle *handle, struct libusb_endpoint_descriptor *endpoint_desc_list){ | 119 | void sendData(int endpoint_id, uint8_t data, libusb_device_handle *handle, struct libusb_endpoint_descriptor *endpoint_desc_list){ |
120 | if(endpoint_id < 0 || endpoint_id > 1){ printf("(sendData) Wrong endpoint !\nMust be 0 or 1\n"); return; } | 120 | if(endpoint_id < 0 || endpoint_id > 1){ printf("(sendData) Wrong endpoint !\nMust be 0 or 1\n"); return; } |
121 | - int status = libusb_interrupt_transfer(handle, endpoint_desc_list[endpoint_id].bEndpointAddress, (unsigned char *) &data, 1, NULL, TIMEOUT); | ||
122 | - if(status!=0 && status!=LIBUSB_ERROR_TIMEOUT){ perror("libusb_interrupt_transfer"); exit(-1); } | 121 | + libusb_interrupt_transfer(handle, endpoint_desc_list[endpoint_id].bEndpointAddress, (unsigned char *) &data, 1, NULL, TIMEOUT); |
122 | + | ||
123 | } | 123 | } |
124 | 124 | ||
125 | -int receiveData(int endpoint_id, uint8_t *data, libusb_device_handle *handle, struct libusb_endpoint_descriptor *endpoint_desc_list){ | ||
126 | - if(endpoint_id < 2 || endpoint_id > 3){ printf("(sendData) Wrong endpoint !\nMust be 2 or 3\n"); return -1; } | ||
127 | - int status = libusb_interrupt_transfer(handle, endpoint_desc_list[endpoint_id].bEndpointAddress, (unsigned char *) data, 1, NULL, TIMEOUT); | ||
128 | - if(status!=0 && status!=LIBUSB_ERROR_TIMEOUT){ perror("libusb_interrupt_transfer"); exit(-1); } | ||
129 | - return status; | 125 | +void receiveData(int endpoint_id, uint8_t *data, libusb_device_handle *handle, struct libusb_endpoint_descriptor *endpoint_desc_list){ |
126 | + if(endpoint_id < 2 || endpoint_id > 3){ printf("(sendData) Wrong endpoint !\nMust be 2 or 3\n"); return; } | ||
127 | + libusb_interrupt_transfer(handle, endpoint_desc_list[endpoint_id].bEndpointAddress, (unsigned char *) data, 1, NULL, TIMEOUT); | ||
130 | } | 128 | } |
games/ninvaders/ninvaders-0.1.1/arduino.h renamed to games/ninvaders/arduino.h
1 | #ifndef ARDUINO | 1 | #ifndef ARDUINO |
2 | #define ARDUINO | 2 | #define ARDUINO |
3 | 3 | ||
4 | +#include <libusb-1.0/libusb.h> | ||
5 | +#include <stdio.h> | ||
6 | +#include <stdlib.h> | ||
7 | +#include <signal.h> | ||
8 | +#include <unistd.h> | ||
9 | + | ||
4 | #define ID_VENDOR 0x2341 | 10 | #define ID_VENDOR 0x2341 |
5 | #define ID_PRODUCT 0x01 | 11 | #define ID_PRODUCT 0x01 |
6 | #define ENDPOINTS_NUMBER 4 | 12 | #define ENDPOINTS_NUMBER 4 |
7 | -#define TIMEOUT 50 | 13 | +#define TIMEOUT 10 |
8 | #define MAX_DATA 50 | 14 | #define MAX_DATA 50 |
9 | 15 | ||
10 | void init(libusb_context **context, libusb_device ***devices, ssize_t *devices_count); | 16 | void init(libusb_context **context, libusb_device ***devices, ssize_t *devices_count); |
@@ -14,6 +20,6 @@ void getEndpoints(struct libusb_config_descriptor *config_desc, struct libusb_en | @@ -14,6 +20,6 @@ void getEndpoints(struct libusb_config_descriptor *config_desc, struct libusb_en | ||
14 | void start(libusb_context **context, libusb_device ***devices, libusb_device_handle **handle, struct libusb_config_descriptor **config_desc, struct libusb_endpoint_descriptor *endpoint_desc_list); | 20 | void start(libusb_context **context, libusb_device ***devices, libusb_device_handle **handle, struct libusb_config_descriptor **config_desc, struct libusb_endpoint_descriptor *endpoint_desc_list); |
15 | void stop(struct libusb_config_descriptor *config_desc, libusb_device_handle *handle, libusb_device **devices, libusb_context *context); | 21 | void stop(struct libusb_config_descriptor *config_desc, libusb_device_handle *handle, libusb_device **devices, libusb_context *context); |
16 | void sendData(int endpoint_id, uint8_t data, libusb_device_handle *handle, struct libusb_endpoint_descriptor *endpoint_desc_list); | 22 | void sendData(int endpoint_id, uint8_t data, libusb_device_handle *handle, struct libusb_endpoint_descriptor *endpoint_desc_list); |
17 | -int receiveData(int endpoint_id, uint8_t *data, libusb_device_handle *handle, struct libusb_endpoint_descriptor *endpoint_desc_list); | 23 | +void receiveData(int endpoint_id, uint8_t *data, libusb_device_handle *handle, struct libusb_endpoint_descriptor *endpoint_desc_list); |
18 | 24 | ||
19 | #endif | 25 | #endif |
games/ninvaders/ninvaders-0.1.1/debian/changelog renamed to games/ninvaders/debian/changelog
games/ninvaders/ninvaders-0.1.1/debian/compat renamed to games/ninvaders/debian/compat
games/ninvaders/ninvaders-0.1.1/debian/control renamed to games/ninvaders/debian/control
games/ninvaders/ninvaders-0.1.1/debian/copyright renamed to games/ninvaders/debian/copyright
games/ninvaders/ninvaders-0.1.1/debian/dirs renamed to games/ninvaders/debian/dirs
games/ninvaders/ninvaders-0.1.1/debian/docs renamed to games/ninvaders/debian/docs
games/ninvaders/ninvaders-0.1.1/debian/links renamed to games/ninvaders/debian/links
games/ninvaders/ninvaders-0.1.1/debian/menu renamed to games/ninvaders/debian/menu
games/ninvaders/ninvaders-0.1.1/debian/ninvaders.1 renamed to games/ninvaders/debian/ninvaders.1
games/ninvaders/ninvaders-0.1.1/debian/rules renamed to games/ninvaders/debian/rules
games/ninvaders/ninvaders-0.1.1/globals.c renamed to games/ninvaders/globals.c
games/ninvaders/ninvaders-0.1.1/globals.h renamed to games/ninvaders/globals.h
games/ninvaders/ninvaders-0.1.1/gpl.txt renamed to games/ninvaders/gpl.txt
games/ninvaders/ninvaders-0.1.1/ind.html renamed to games/ninvaders/ind.html
games/ninvaders/ninvaders-0.1.1/makefile renamed to games/ninvaders/makefile
1 | CC=gcc | 1 | CC=gcc |
2 | CFLAGS=-O3 -Wall | 2 | CFLAGS=-O3 -Wall |
3 | -LIBS=-l ncurses usb-1.0 | 3 | +LIBS=-l ncurses -l usb-1.0 |
4 | 4 | ||
5 | -CFILES=globals.c view.c aliens.c ufo.c player.c ardunio.c nInvaders.c | ||
6 | -HFILES=globals.h view.h aliens.h ufo.h player.h ardunio.h nInvaders.h | ||
7 | -OFILES=globals.o view.o aliens.o ufo.o player.o ardunio.o nInvaders.o | 5 | +CFILES=arduino.c globals.c view.c aliens.c ufo.c player.c nInvaders.c |
6 | +HFILES=arduino.h globals.h view.h aliens.h ufo.h player.h nInvaders.h | ||
7 | +OFILES=arduino.o globals.o view.o aliens.o ufo.o player.o nInvaders.o | ||
8 | all: nInvaders | 8 | all: nInvaders |
9 | rm -f $(OFILES) | 9 | rm -f $(OFILES) |
10 | 10 |
games/ninvaders/ninvaders-0.1.1/nInvaders.c renamed to games/ninvaders/nInvaders.c
@@ -48,8 +48,25 @@ int status; // status handled in timer | @@ -48,8 +48,25 @@ int status; // status handled in timer | ||
48 | #define GAME_EXIT 5 | 48 | #define GAME_EXIT 5 |
49 | #define GAME_HIGHSCORE 6 | 49 | #define GAME_HIGHSCORE 6 |
50 | 50 | ||
51 | - | ||
52 | - | 51 | +libusb_device_handle *handle; |
52 | +struct libusb_endpoint_descriptor endpoint_desc_list[ENDPOINTS_NUMBER]; | ||
53 | +int waitUSB = 0; | ||
54 | + | ||
55 | +void sendLives(){ | ||
56 | + uint8_t toSend = 0x00; | ||
57 | + if(lives == 5) toSend = 0x1F; | ||
58 | + else if(lives == 4) toSend = 0x0F; | ||
59 | + else if(lives == 3) toSend = 0x07; | ||
60 | + else if(lives == 2) toSend = 0x03; | ||
61 | + else if(lives == 1) toSend = 0x01; | ||
62 | + else if(lives == 0) toSend = 0x00; | ||
63 | + if(handle != NULL && endpoint_desc_list != NULL && waitUSB == 0){ | ||
64 | + waitUSB = 1; | ||
65 | + usleep(100000); // wait for endpoints to be free (100 ms) | ||
66 | + sendData(0, toSend, handle, endpoint_desc_list); | ||
67 | + waitUSB = 0; | ||
68 | + } | ||
69 | +} | ||
53 | 70 | ||
54 | /** | 71 | /** |
55 | * initialize level: reset attributes of most units | 72 | * initialize level: reset attributes of most units |
@@ -64,7 +81,6 @@ static void initLevel() | @@ -64,7 +81,6 @@ static void initLevel() | ||
64 | drawscore(); | 81 | drawscore(); |
65 | } | 82 | } |
66 | 83 | ||
67 | - | ||
68 | /** | 84 | /** |
69 | * evaluate command line parameters | 85 | * evaluate command line parameters |
70 | */ | 86 | */ |
@@ -136,21 +152,26 @@ void drawscore() | @@ -136,21 +152,26 @@ void drawscore() | ||
136 | /** | 152 | /** |
137 | * reads input from keyboard and do action | 153 | * reads input from keyboard and do action |
138 | */ | 154 | */ |
139 | -void readInput(libusb_device_handle *handle, struct libusb_endpoint_descriptor *endpoint_desc_list) | 155 | +void readInput() |
140 | { | 156 | { |
141 | int ch; | 157 | int ch; |
142 | static int lastmove; | 158 | static int lastmove; |
143 | 159 | ||
144 | timeout(100); | 160 | timeout(100); |
145 | ch = getch(); // get key pressed | 161 | ch = getch(); // get key pressed |
146 | - if(ch == -1){ | ||
147 | - uint8_t data; | ||
148 | - int status = receiveData(2, &data, handle, endpoint_desc_list); | ||
149 | - if(status == 0){ | ||
150 | - if(data & 0x10 == 0x10) ch = KEY_LEFT; | ||
151 | - else if(data & 0x08 == 0x08) ch = ' '; | ||
152 | - else if(data & 0x04 == 0x04) ch = KEY_RIGHT; | 162 | + |
163 | + static uint8_t data = 0; | ||
164 | + if(ch == -1){ // keyboard first | ||
165 | + usleep(1000000); // slow down inputs (100 ms) | ||
166 | + if(handle != NULL && endpoint_desc_list != NULL && waitUSB == 0) | ||
167 | + receiveData(2, &data, handle, endpoint_desc_list); | ||
168 | + if(data != 0){ | ||
169 | + if((data & 0x10) == 0x10) ch = KEY_LEFT; | ||
170 | + else if((data & 0x04) == 0x04) ch = KEY_RIGHT; | ||
171 | + else if((data & 0x08) == 0x08) ch = ' '; | ||
172 | + else return; | ||
153 | } | 173 | } |
174 | + else return; | ||
154 | } | 175 | } |
155 | 176 | ||
156 | switch (status) { | 177 | switch (status) { |
@@ -169,6 +190,7 @@ void readInput(libusb_device_handle *handle, struct libusb_endpoint_descriptor * | @@ -169,6 +190,7 @@ void readInput(libusb_device_handle *handle, struct libusb_endpoint_descriptor * | ||
169 | level = 0; // reset level | 190 | level = 0; // reset level |
170 | score = 0; // reset score | 191 | score = 0; // reset score |
171 | lives = 3; // restore lives | 192 | lives = 3; // restore lives |
193 | + sendLives(); | ||
172 | status = GAME_NEXTLEVEL; | 194 | status = GAME_NEXTLEVEL; |
173 | } else if (ch == 'q') { // quit game | 195 | } else if (ch == 'q') { // quit game |
174 | status = GAME_EXIT; | 196 | status = GAME_EXIT; |
@@ -205,6 +227,7 @@ void readInput(libusb_device_handle *handle, struct libusb_endpoint_descriptor * | @@ -205,6 +227,7 @@ void readInput(libusb_device_handle *handle, struct libusb_endpoint_descriptor * | ||
205 | status = GAME_NEXTLEVEL; | 227 | status = GAME_NEXTLEVEL; |
206 | } else if (ch == 'L') { // cheat: one more live | 228 | } else if (ch == 'L') { // cheat: one more live |
207 | lives++; | 229 | lives++; |
230 | + sendLives(); | ||
208 | drawscore(); | 231 | drawscore(); |
209 | } else if (ch == 'q') { // quit game | 232 | } else if (ch == 'q') { // quit game |
210 | status = GAME_EXIT; | 233 | status = GAME_EXIT; |
@@ -258,6 +281,7 @@ void handleTimer() | @@ -258,6 +281,7 @@ void handleTimer() | ||
258 | if (aliens_move_counter == 0 && aliensMove() == 1) { | 281 | if (aliens_move_counter == 0 && aliensMove() == 1) { |
259 | // aliens reached player | 282 | // aliens reached player |
260 | lives = 0; | 283 | lives = 0; |
284 | + sendLives(); | ||
261 | status = GAME_OVER; | 285 | status = GAME_OVER; |
262 | } | 286 | } |
263 | 287 | ||
@@ -271,6 +295,7 @@ void handleTimer() | @@ -271,6 +295,7 @@ void handleTimer() | ||
271 | if (aliens_shot_counter == 0 && aliensMissileMove() == 1) { | 295 | if (aliens_shot_counter == 0 && aliensMissileMove() == 1) { |
272 | // player was hit | 296 | // player was hit |
273 | lives--; // player looses one life | 297 | lives--; // player looses one life |
298 | + sendLives(); | ||
274 | drawscore(); // draw score | 299 | drawscore(); // draw score |
275 | playerExplode(); // display some explosion graphics | 300 | playerExplode(); // display some explosion graphics |
276 | if (lives == 0) { // if no lives left ... | 301 | if (lives == 0) { // if no lives left ... |
@@ -342,31 +367,30 @@ void setUpTimer() | @@ -342,31 +367,30 @@ void setUpTimer() | ||
342 | 367 | ||
343 | 368 | ||
344 | int go = 1; | 369 | int go = 1; |
345 | -void signalINT(int sig){ | 370 | +/*void signalINT(int sig){ |
346 | if(sig == SIGINT){ | 371 | if(sig == SIGINT){ |
347 | go = 0; | 372 | go = 0; |
348 | } | 373 | } |
349 | -} | 374 | +}*/ |
350 | int main(int argc, char **argv) | 375 | int main(int argc, char **argv) |
351 | { | 376 | { |
352 | libusb_context *context; | 377 | libusb_context *context; |
353 | libusb_device **devices; | 378 | libusb_device **devices; |
354 | - libusb_device_handle *handle; | ||
355 | struct libusb_config_descriptor *config_desc; | 379 | struct libusb_config_descriptor *config_desc; |
356 | - struct libusb_endpoint_descriptor endpoint_desc_list[ENDPOINTS_NUMBER]; | ||
357 | 380 | ||
358 | // start | 381 | // start |
359 | start(&context, &devices, &handle, &config_desc, endpoint_desc_list); | 382 | start(&context, &devices, &handle, &config_desc, endpoint_desc_list); |
360 | 383 | ||
361 | // singals | 384 | // singals |
362 | - struct sigaction action; | 385 | + /*struct sigaction action; |
363 | action.sa_handler = signalINT; | 386 | action.sa_handler = signalINT; |
364 | - sigaction(SIGINT, &action, NULL); | 387 | + sigaction(SIGINT, &action, NULL);*/ |
365 | 388 | ||
366 | - // nInvaders | ||
367 | - weite = 0; | ||
368 | - score = 0; | 389 | + // nInvaders |
390 | + weite = 0; | ||
391 | + score = 0; | ||
369 | lives = 3; | 392 | lives = 3; |
393 | + sendLives(); | ||
370 | level = 0; | 394 | level = 0; |
371 | skill_level = 1; | 395 | skill_level = 1; |
372 | 396 | ||
@@ -380,7 +404,7 @@ int main(int argc, char **argv) | @@ -380,7 +404,7 @@ int main(int argc, char **argv) | ||
380 | // read keyboard input | 404 | // read keyboard input |
381 | do { | 405 | do { |
382 | // do movements and key-checking | 406 | // do movements and key-checking |
383 | - readInput(handler, endpoint_desc_list); | 407 | + readInput(handle, endpoint_desc_list); |
384 | } while (go); | 408 | } while (go); |
385 | 409 | ||
386 | // stop | 410 | // stop |
@@ -399,6 +423,7 @@ void doScoring(int alienType) | @@ -399,6 +423,7 @@ void doScoring(int alienType) | ||
399 | // every 6000 pts player gets a new live | 423 | // every 6000 pts player gets a new live |
400 | if (score % 6000 == 0){ | 424 | if (score % 6000 == 0){ |
401 | lives++; | 425 | lives++; |
426 | + sendLives(); | ||
402 | } | 427 | } |
403 | 428 | ||
404 | drawscore(); // display score | 429 | drawscore(); // display score |
games/ninvaders/ninvaders-0.1.1/nInvaders.h renamed to games/ninvaders/nInvaders.h
games/ninvaders/ninvaders-0.1.1/aliens.o deleted
No preview for this file type
games/ninvaders/ninvaders-0.1.1/globals.o deleted
No preview for this file type
games/ninvaders/ninvaders-0.1.1/player.o deleted
No preview for this file type
games/ninvaders/ninvaders-0.1.1/ufo.o deleted
No preview for this file type
games/ninvaders/ninvaders-0.1.1/view.o deleted
No preview for this file type
games/ninvaders/ninvaders-0.1.1/player.c renamed to games/ninvaders/player.c
games/ninvaders/ninvaders-0.1.1/player.h renamed to games/ninvaders/player.h
games/ninvaders/ninvaders-0.1.1/ufo.c renamed to games/ninvaders/ufo.c
games/ninvaders/ninvaders-0.1.1/ufo.h renamed to games/ninvaders/ufo.h
games/ninvaders/ninvaders-0.1.1/view.c renamed to games/ninvaders/view.c
games/ninvaders/ninvaders-0.1.1/view.h renamed to games/ninvaders/view.h