亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問下面的內容該怎樣可以實現?

請問下面的內容該怎樣可以實現?

C
藍山帝景 2023-03-03 14:10:22
我先編寫了一個倒計時的函數void time(){int hour, minute, second,i,j;hour = 0;minute = 0;second = 5;for (;;){printf("-------------------------\n");printf("*\t%02d:%02d:%02d\t*\n", hour, minute, second);printf("-------------------------\n");Sleep(1000);system("cls");second--;if (second == 0){if (minute == 0){if (hour == 0)break;hour--;minute = 60;}if (minute == 0 && hour == 0)break;minute--;second = 59;}if (minute == 0 && hour == 0&&second==0)break;}printf("-------------------------\n");printf("*\t時間到?。?!\t*\n");printf("-------------------------\n");}如果想要它能在運行主函數的游戲內容時起到計時的作用,就必須讓這個函數和主函數同時運行。
查看完整描述

1 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

首先你要有控制蛇移動方向的全局變量(定義在main以外因為線程函數也要調用它,每次鍵盤輸入都會修改它的值), 比如 char direction 'a' ==左 'w' == 右 'd'==上 's' == 下,然后你在移動時應該是在while里面操作的吧,你每移動一步前都讀一下direction這個變量的數值然后再控制移動方向(注意s這個鍵可以忽略因為不會倒著走) 然后你可以用pthread.h這個庫 例子是 pthread t;// 定義一個線程 pthread_create(&t, null, listen_keyboard_input, null);//建立線程執行listen_keyboard_input這個函數 這個線程執行的函數 void listen_keyboard_input(){ while(應該通過某個信號來退出這個循環,從而表示游戲結束){ direction =getchar(); } } 但是這里存在同步問題, 比如當這個線程的getchar()在給direction輔助的同時,你控制貪吃蛇移動的線程正在調用 direction的值來判斷下一個移動方向,這就會出問題,所以要加一個鎖,叫 mutex lock;這個也定義成全局變量可以使各線程共享。 pthread_mutex_t mutex; //定義一個鎖 pthread_mutex_init(&mutex, null, null);//初始化 然后把函數修改成 void listen_keyboard_input(){ while(應該通過某個信號來退出這個循環,從而表示游戲結束){ pthread_mutex_lock(&mutex); direction =getchar(); pthread_mutex_unlock(&mutex); } } 另外一個控制貪吃蛇移動的時候也要加鎖 while(.....){ char c; pthread_mutex_lock(&mutex); c = direction; pthread_mutex_unlock(&mutex); switch(c){ ................ } ................................... } 這樣就好了 注意你的控制貪吃蛇移動的部分也必須要放在另外一個pthread 里面執行,如果放在主線程, 主線程會一直等listen_keyboard_input而什么事都不會做 你把這兩個線程用 pthread_create 創建完成后 用 t1.join(); t2.join(); 就可以使這兩個線程并發執行了 如果你用的是linux 來編譯的,你再輸入gcc 指令后加上 -lpthread 就可以了 

查看完整回答
反對 回復 2023-03-06
  • 1 回答
  • 0 關注
  • 83 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號