贪吃蛇游戏,C语言如何实现多线程,奖励高。
然后就可以使用pthread.h库了
例子有
pthread t;//定义一个线程
pthread _ create(amp;t,null,listen_keyboard_input,null);//创建一个线程来执行函数listen_keyboard_input。
该线程执行的函数
void listen_keyboard_input(){
While(你应该通过一个信号退出这个循环,从而表示游戏结束){
direction = getchar();
}
}
但是,这里有一个同步问题。比如这个线程的getchar()在辅助方向的时候,你控制蛇移动的线程在调用方向的值来判断下一个移动的方向,这会产生问题,所以加一个锁叫互斥锁;这也被定义为可以被线程共享的全局变量。
pthread_mutex_t互斥体;//定义一个锁
pthread_mutex_init互斥,null,null);//初始化
然后将函数修改为
void listen_keyboard_input(){
While(你应该通过一个信号退出这个循环,从而表示游戏结束){
pthread_mutex_lock互斥);
direction = getchar();
pthread _ mutex _ unlock(& amp;互斥);
}
}
另一个在控制蛇的移动时也要锁定。
而(.....){
char c;
pthread_mutex_lock互斥);
c =方向;
pthread _ mutex _ unlock(& amp;互斥);
开关(c){
................
}
...................................
}
那很好。
请注意,您控制蛇移动的部分也必须在另一个pthread中执行。如果放在主线程中,主线程会等待listen_keyboard_input,什么都不做。
用pthread_create创建这两个线程后,
使用t 1 . join();
T2 . join();
您可以让这两个线程并发执行。
如果使用linux编译,只需输入gcc指令,添加-lpthread即可。
如果什么都不懂,可以找更多pthread类的例子。