Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <allegro5/allegro.h>
- #include <allegro5/allegro_primitives.h>
- #include <arpa/inet.h>
- #include <netinet/in.h>
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <string.h>
- #include <pthread.h>
- #include <iostream>
- #define BUFLEN 512
- #define PORT 9930
- char buf[BUFLEN];
- struct posxy
- {
- int x;
- int y;
- };
- struct posxy player_1;
- struct posxy player_2;
- void err(const char *s)
- {
- perror(s);
- exit(1);
- }
- void *game(void *data)
- {
- std::cout<<(int*)data<<std::endl;
- ALLEGRO_DISPLAY *display;
- ALLEGRO_EVENT_QUEUE *event_queue;
- ALLEGRO_EVENT events;
- ALLEGRO_KEYBOARD_STATE keyState;
- int x = 0, y = 0;
- int x1 = -10 , y1 = -20;
- al_init();
- al_set_new_display_flags(ALLEGRO_WINDOWED);
- display = al_create_display(800, 600);
- event_queue = al_create_event_queue();
- al_set_window_title(display, "GameClient");
- al_set_window_position(display, 200, 100);
- al_init_primitives_addon();
- al_install_keyboard();
- ALLEGRO_TIMER *timer = al_create_timer(1.0 / 60);
- al_register_event_source(event_queue, al_get_timer_event_source(timer));
- al_register_event_source(event_queue, al_get_display_event_source(display));
- al_register_event_source(event_queue, al_get_keyboard_event_source());
- al_start_timer(timer);
- while(1)
- {
- al_wait_for_event(event_queue, &events);
- if (events.type == ALLEGRO_EVENT_TIMER)
- {
- al_get_keyboard_state(&keyState);
- if (al_key_down(&keyState, ALLEGRO_KEY_DOWN))
- {
- y += 5;
- }
- else if (al_key_down(&keyState, ALLEGRO_KEY_UP))
- {
- y -= 5;
- }
- else if (al_key_down(&keyState, ALLEGRO_KEY_RIGHT))
- {
- x += 5;
- }
- else if (al_key_down(&keyState, ALLEGRO_KEY_LEFT))
- {
- x -= 5;
- }
- player_1.x = x;
- player_1.y = y;
- }
- al_clear_to_color(al_map_rgb(0, 0, 0));
- al_draw_rectangle(player_2.x, player_2.y,player_2.x + 32, player_2.y + 32, al_map_rgb(255,0,255), 1);
- al_draw_rectangle(x, y, x + 32, y + 32, al_map_rgb(255,0,255), 1);
- al_flip_display();
- }
- }
- void *multiplayer(void *data)
- {
- struct sockaddr_in serv_addr;
- int sockfd, i;
- socklen_t slen = sizeof(serv_addr);
- if ((sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
- err("socket");
- bzero(&serv_addr, sizeof(serv_addr));
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_port = htons(PORT);
- if (inet_aton("127.0.0.1", &serv_addr.sin_addr)==0)
- {
- fprintf(stderr, "inet_aton() failed\n");
- exit(1);
- }
- while(1)
- {
- if (sendto(sockfd, &player_1, sizeof(struct posxy), 0, (struct sockaddr*)&serv_addr, slen)==-1)
- err("sendto()");
- if (recvfrom(sockfd, &player_2, sizeof(struct posxy), 0, (struct sockaddr*)&serv_addr, &slen) == -1)
- err("recvfrom()");
- /*printf("Received packet from %s:%d\nData: %s\n\n",
- inet_ntoa(serv_addr.sin_addr), ntohs(serv_addr.sin_port), buf);*/
- }
- close(sockfd);
- }
- int main(int argc, char** argv)
- {
- buf[0] = 0;
- pthread_t t1, t2;
- int x = 0;
- pthread_create(&t1, NULL, multiplayer, (void *)(&x));
- pthread_create(&t2, NULL, game, (void *)(&x));
- pthread_join(t1, NULL);
- pthread_join(t2, NULL);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement