日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

“坦克大战”小游戏(C语言)源代码及其详解注释

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 “坦克大战”小游戏(C语言)源代码及其详解注释 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

“坦克大戰”小游戲(C語言)源代碼及其詳解注釋

?

?

運行實現之后的圖片結果如下:

?

筆記
1.敵人必須先移動再創造,不然會出現尸體復活。
? 原因:敵人死亡之后,中心點是無法再次定位的,敵人刷新的那一幀會出現兩個中心點。
? 解決方法:再主函數里把敵人移動的函數放在創造敵人的函數之前。


2.敵人子彈和玩家子彈相撞時,必定只會有一方的子彈消失,看概率。
? 原因:兩方子彈相撞只會有一方的子彈先到達另一方的前面然后消失,跟子彈移動速度(停留時間)有關。
? 解決方法:把子彈的消失判定點往前加一個點來判斷是否是敵方的子彈(暫時不解決)


3.敵人發射子彈時,有時候會出現發射子彈的方向和敵人的方向不一致。
? 原因:敵人轉向時是先改變方向,下一次移動時再轉過去,子彈發射的時間被卡在了兩者之間。
? 解決方法:將發射子彈寫在移動的里面,這樣會改變敵人射擊的頻率,移動的條件符合,再判斷射擊條件,兩者都符合才會射擊。(不優)
??????????? 添加一個坦克屬性來設置坦克預備轉向。


4.敵人的子彈在接近玩家附近一格時,玩家向反方向移動會消除子彈,反之相同。(觸發幾率很小)
? 原因:玩家移動的時候會把之前的所在的一條三個格子全都清零。
? 解決方法:暫無


5.當玩家的前方是敵方坦克時,無法發射子彈,反之相同。不能貼臉射擊。
? 原因:發射子彈的條件是坦克的前方無阻擋物,才會生成子彈,在子彈生成之后才會飛行和擊毀。
??? 解決方法:在發射子彈時添加條件判斷。(不優,感覺會影響游戲體驗)


6.敵人A和B的行動模式是一樣的,可以把他們的移動寫在一個函數里,但是運行的時候會出錯只有一個坦克會動。
??? 原因:函數傳入的參數是在函數里改變了不會影響外面的參數,這需要用到指針。
??? 解決方法:把所有的坦克參數全都變成指針類型?(太復雜了)


7.敵人坦克在移動的時候會被自己的子彈擋住然后轉向,玩家也是(幾率很小,不過不影響游戲)

#pragma warning(disable:4996) #include<stdio.h> #include<iostream> #include<conio.h> #include<time.h> #include<windows.h> #include<graphics.h> #define ROW 48int map[ROW][ROW];//正方形的地圖 int refresh;//記錄當前刷新的次數 int FlyBullet_P_C, FlyBullet_E_C;//控制玩家和敵人子彈的飛行速度 struct Tank{//坦克的參數int x;//橫向坐標int y;//縱向坐標int dir;//方向int rdir;//預備轉向int dirt;//記錄轉向的時間int dirc;//控制轉向頻率int life;//坦克的生命int maxl;//坦克最大生命值int dietime;//坦克的死亡時間int str;//子彈的傷害int mt;//記錄移動時間int mc; //控制移動速度int st;//記錄射擊時間int sc;//控制射速int score;//擊敗敵人的得分/玩家積累的分數int shape[3][3];//坦克的外形 } player, enemyA, enemyB, enemyC, enemyD, enemyE;//創建玩家敵人 int Player[3][3]{ {0,2,0},{2,4,2},{2,2,2} };//玩家的坦克 int empty[3][3];//空數組用于轉向 struct CreatePoint {//敵人的刷新點int x;//刷新點橫向坐標int y;//縱向坐標 }cp[5]; int propbox;//道具編號; int propt, propc;//記錄,控制道具刷新時間 int propflag;//判斷場上是否有道具//游戲開始時的初始化 void GameStart() {initgraph(640, 480);//窗口大小setbkcolor(WHITE);//背景顏色memset(map, 0, sizeof(map));//初始化數組為0for (int i = 0; i < ROW; i++) map[0][i] = map[ROW - 1][i] = 1;for (int i = 1; i < ROW - 1; i++) map[i][0] = map[i][ROW - 1] = 1;for (int y = 0; y < ROW; y++) {//y軸向下for (int x = 0; x < ROW; x++) {//x軸向右if (map[y][x]) {setlinecolor(BLACK);setfillcolor(RGB(213, 222, 217));fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);}}}refresh = 0;map[45][23] = 4;//玩家的出生點map[44][23] = map[46][23] = map[45][22] = map[45][24] = map[46][22] = map[46][24] = 2;player.life = 3;player.score = 0;player.dir = 1;player.str = 1;player.mc = 3;player.sc = 10;player.maxl = 3;FlyBullet_P_C = 1;FlyBullet_E_C = 3;enemyA.life = enemyB.life = enemyC.life = enemyD.life = enemyE.life = -1;enemyA.dir = enemyB.dir = enemyC.dir = enemyD.dir = enemyE.dir = 2;enemyA.rdir = enemyB.rdir = enemyC.rdir = enemyD.rdir = enemyE.rdir = 2;int Enemy[3][3]{ {15,15,0},{0,20,15},{15,15,0} };//敵人的坦克for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if (Enemy[i][j]) {enemyA.shape[i][j] = Enemy[i][j];//敵人A 中心為20 外殼為15enemyB.shape[i][j] = Enemy[i][j] + 1;//敵人B 中心為21 外殼為16enemyC.shape[i][j] = Enemy[i][j] + 2;//敵人C 中心為22 外殼為17enemyD.shape[i][j] = Enemy[i][j] + 3;//敵人D 中心為23 外殼為18enemyE.shape[i][j] = Enemy[i][j] + 4;//敵人E 中心為24 外殼為19}}}//地圖地形for (int i = 0; i < 5; i++) map[10][10 + i] = map[37][10 + i] = map[10][37 - i] = map[37][37 - i] = 1;for (int i = 0; i < 4; i++) map[11 + i][10] = map[36 - i][10] = map[11 + i][37] = map[36 - i][37] = 1;map[23][23] = map[23][24] = map[24][23] = map[24][24] = 1;//初始化敵人的刷新點cp[0].x = 2;cp[0].y = 2;cp[1].x = 24;cp[1].y = 2;cp[2].x = 45;cp[2].y = 2;cp[3].x = 2;cp[3].y = 23;cp[4].x = 45;cp[4].y = 23;//道具的刷新率propt = 0;propc = 300;propflag = -1; }//繪制地圖 void DrawMap() {for (int y = 1; y < ROW-1; y++) {//y軸向下for (int x = 1; x < ROW-1; x++) {//x軸向右switch (map[y][x]) {case 0:break;case 1:setlinecolor(BLACK);setlinestyle(NULL, 1);setfillcolor(RGB(213,222,217));//灰色fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);break;//墻壁case 2://玩家坦克的外殼case 4://玩家的中心點setlinecolor(BLACK);setlinestyle(NULL, 1);setfillcolor(RGB(0, 140, 158));//青藍色fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);break;case 19://敵人E的外殼setlinecolor(BLACK);setlinestyle(NULL, 1);setfillcolor(RED);fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);break;case 18://敵人D的外殼case 17://敵人C的外殼setlinecolor(BLACK);setlinestyle(NULL, 1);setfillcolor(RGB(89, 79, 79));//褐色fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);break;case 16://敵人B的外殼case 15://敵人A的外殼setlinecolor(BLACK);setlinestyle(NULL, 1);setfillcolor(RGB(85, 98, 112));//深灰色fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);break;case 24://敵人E的中心點setlinecolor(BLACK);setlinestyle(NULL, 2);switch (enemyE.life) {case 0:setfillcolor(RGB(255, 255, 255)); break;case 1:setfillcolor(RGB(255, 0, 0)); break;case 2:setfillcolor(RGB(255, 165, 0)); break;case 3:setfillcolor(RGB(255, 255, 0)); break;case 4:setfillcolor(RGB(0, 255, 0)); break;case 5:setfillcolor(RGB(0, 255, 255)); break;case 6:setfillcolor(RGB(0, 0, 255)); break;case 7:setfillcolor(RGB(160, 32, 240)); break;}【】fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);//邊框填充矩形break;case 23://敵人D的中心點setlinecolor(BLACK);setlinestyle(NULL, 2);switch (enemyD.life) {case 0:setfillcolor(RGB(255, 255, 255)); break;case 1:setfillcolor(RGB(255, 0, 0)); break;case 2:setfillcolor(RGB(255, 165, 0)); break;case 3:setfillcolor(RGB(255, 255, 0)); break;case 4:setfillcolor(RGB(0, 255, 0)); break;case 5:setfillcolor(RGB(0, 255, 255)); break;case 6:setfillcolor(RGB(0, 0, 255)); break;case 7:setfillcolor(RGB(160, 32, 240)); break;}fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);break;case 22://敵人C的中心點setlinecolor(BLACK);setlinestyle(NULL, 2);switch (enemyC.life) {case 0:setfillcolor(RGB(255, 255, 255)); break;case 1:setfillcolor(RGB(255, 0, 0)); break;case 2:setfillcolor(RGB(255, 165, 0)); break;case 3:setfillcolor(RGB(255, 255, 0)); break;case 4:setfillcolor(RGB(0, 255, 0)); break;case 5:setfillcolor(RGB(0, 255, 255)); break;case 6:setfillcolor(RGB(0, 0, 255)); break;case 7:setfillcolor(RGB(160, 32, 240)); break;}fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);break;case 21://敵人B的中心點setlinecolor(BLACK);setlinestyle(NULL, 2);switch (enemyB.life) {case 0:setfillcolor(RGB(255, 255, 255)); break;case 1:setfillcolor(RGB(255, 0, 0)); break;case 2:setfillcolor(RGB(255, 165, 0)); break;case 3:setfillcolor(RGB(255, 255, 0)); break;case 4:setfillcolor(RGB(0, 255, 0)); break;case 5:setfillcolor(RGB(0, 255, 255)); break;case 6:setfillcolor(RGB(0, 0, 255)); break;case 7:setfillcolor(RGB(160, 32, 240)); break;}fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);break;case 20://敵人A的中心點 setlinecolor(BLACK);setlinestyle(NULL, 2);switch (enemyA.life) {case 0:setfillcolor(RGB(255, 255, 255)); break;//黑case 1:setfillcolor(RGB(255, 0, 0)); break;//紅case 2:setfillcolor(RGB(255, 165, 0)); break;//橙case 3:setfillcolor(RGB(255, 255, 0)); break;//黃case 4:setfillcolor(RGB(0, 255, 0)); break;//綠case 5:setfillcolor(RGB(0, 255, 255)); break;//青case 6:setfillcolor(RGB(0, 0, 255)); break;//藍case 7:setfillcolor(RGB(160, 32, 240)); break;//紫}fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);break;case 5://玩家向上的子彈case 6://玩家向右的子彈case 7://玩家向下的子彈case 8://玩家向左的子彈setlinecolor(BLACK);setlinestyle(NULL, 1);circle(x * 10 + 5, y * 10 + 5, 3);//空心圓 玩家的子彈break;case 11://敵人向上的子彈case 12://敵人向右的子彈case 13://敵人向下的子彈case 14://敵人向左的子彈setlinecolor(BLACK);setlinestyle(NULL, 1);setfillcolor(BLACK);fillcircle(x * 10 + 5, y * 10 + 5, 3);//黑色實心圓 敵人的子彈break;case 25://裝道具的盒子switch (propbox) {case 1:setlinecolor(BLACK);setlinestyle(NULL, 2);setfillcolor(RED);fillcircle(x * 10 + 5, y * 10 + 5, 5);break;case 2:setlinecolor(BLACK);setlinestyle(NULL, 2);setfillcolor(RGB(242, 196, 90));fillcircle(x * 10 + 5, y * 10 + 5, 5);break;case 3:setlinecolor(BLACK);setlinestyle(NULL, 2);setfillcolor(RGB(77, 188, 233));fillcircle(x * 10 + 5, y * 10 + 5, 5);break;case 4:setlinecolor(BLACK);setlinestyle(NULL, 2);setfillcolor(RGB(42, 4, 74));fillcircle(x * 10 + 5, y * 10 + 5, 5);break;case 5:setlinecolor(BLACK);setlinestyle(NULL, 5);setfillcolor(RGB(254, 67, 101));fillrectangle(x * 10, y * 10 + 10, x * 10 + 10, y * 10);break;}break;case 10:setfillcolor(RGB(250, 105, 0));setlinecolor(RGB(204, 51, 63));setlinestyle(NULL, 2);POINT pts[] = { {x * 10 - 10, y * 10 - 8}, {x * 10, y * 10}, {x * 10 - 10, y * 10 + 5},{x * 10 + 1,y * 10 + 7},{x * 10 - 5,y * 10 + 11},{x * 10 + 4,y * 10 + 12},{x * 10 + 3,y * 10 + 18},{x * 10 + 8,y * 10 + 11},{x * 10 + 12,y * 10 + 20},{x * 10 + 10,y * 10 + 9},{x * 10 + 20,y * 10 + 11},{x * 10 + 13,y * 10 + 5},{x * 10 + 20,y * 10 - 4},{x * 10 + 10,y * 10 + 2},{x * 10 + 10,y * 10 - 10},{x * 10 + 7,y * 10 - 2} };fillpolygon(pts, 16);break;//爆炸效果}}} }//右半部分顯示游戲狀態 void GameState() {//刷新的幀數char s[10];settextcolor(BLUE);sprintf(s, "%d", refresh);outtextxy(490, 460, s);outtextxy(490, 0, "當前生命值:");//顯示生命值if (player.life > 0) {setfillcolor(RGB(254, 67, 101));}else {setfillcolor(BLACK);}setlinecolor(RED);setlinestyle(NULL, 2);//第一顆心POINT pts[] = { {490, 30}, {498, 22}, {505, 30},{512, 22},{520, 30},{505, 45} };fillpolygon(pts, 6);if (player.life > 1) {setfillcolor(RGB(254, 67, 101));}else {setfillcolor(BLACK);}//第二顆心POINT pts1[] = { {530, 30}, {538, 22}, {545, 30},{552, 22},{560, 30},{545, 45} };fillpolygon(pts1, 6);if (player.life > 2) {setfillcolor(RGB(254, 67, 101));}else {setfillcolor(BLACK);}//第三顆心POINT pts2[] = { {570, 30}, {578, 22}, {585, 30},{592, 22},{600, 30},{585, 45} };fillpolygon(pts2, 6);if (player.maxl > 3) {setlinecolor(RED);}else {setlinecolor(BLACK);}if (player.life > 3) {setfillcolor(RGB(254, 67, 101));}else {setfillcolor(BLACK);}//第四顆心POINT pts3[] = { {510, 55}, {518, 47}, {525, 55},{532, 47},{540, 55},{525, 70} };fillpolygon(pts3, 6);if (player.maxl > 4) {setlinecolor(RED);}else {setlinecolor(BLACK);}if (player.life > 4) {setfillcolor(RGB(254, 67, 101));}else {setfillcolor(BLACK);}//第五顆心POINT pts4[] = { {550, 55}, {558, 47}, {565, 55},{572, 47},{580, 55},{565, 70} };fillpolygon(pts4, 6);//傷害面板outtextxy(490, 75, "傷害:");setlinecolor(RGB(255, 130, 58));setlinestyle(NULL, 2);if (player.str > 1) {setfillcolor(RGB(242, 196, 90));}else {setfillcolor(BLACK);}fillrectangle(545, 75, 570, 92);if (player.str > 2) {setfillcolor(RGB(242, 196, 90));}else {setfillcolor(BLACK);}fillrectangle(575, 75, 600, 92);if (player.str > 3) {setfillcolor(RGB(242, 196, 90));}else {setfillcolor(BLACK);}fillrectangle(605, 75, 630, 92);//速度面板outtextxy(490, 100, "速度:");setlinecolor(RGB(38, 173, 228));setlinestyle(NULL, 2);if (player.mc < 3) {setfillcolor(RGB(77, 188, 233));}else {setfillcolor(BLACK);}fillrectangle(545, 100, 570, 117);if (player.mc < 2) {setfillcolor(RGB(77, 188, 233));}else {setfillcolor(BLACK);}fillrectangle(575, 100, 600, 117);if (player.mc < 1) {setfillcolor(RGB(77, 188, 233));}else {setfillcolor(BLACK);}fillrectangle(605, 100, 630, 117);//射速面板outtextxy(490, 125, "射速:");setlinecolor(RGB(108, 91, 123)); setlinestyle(NULL, 2);if (player.sc <= 7) {setfillcolor(RGB(42, 4, 74));}else {setfillcolor(BLACK);}fillrectangle(545, 125, 570, 142);if (player.sc <= 4) {setfillcolor(RGB(42, 4, 74));}else {setfillcolor(BLACK);}fillrectangle(575, 125, 600, 142);if (player.sc <= 2) {setfillcolor(RGB(42, 4, 74));}else {setfillcolor(BLACK);}fillrectangle(605, 125, 630, 142);//顯示分數outtextxy(490, 400, "當前分數:");char sco[10];settextcolor(BLUE);sprintf(sco, "%d", player.score);outtextxy(600, 400, sco);outtextxy(490, 440, "WSAD移動,Q射擊"); }//生成道具 void Create_prop() {if ((refresh - propt > propc)&& propflag==1) {int x = rand() % 47 + 1, y = rand() % 47 + 1;if (map[y][x] == 0) {map[y][x] = 25;int n = rand() % 7;switch (n) {case 0:case 1:case 2:propbox = 5; break;case 3:if (player.maxl < 5) {propbox = 1;}else {propbox = 5;}break;case 4: if (player.str < 4) {propbox = 2;}else {propbox = 5;}break;case 5:if (player.mc > 0) {propbox = 3;}else {propbox = 5;}break;case 6:if (player.sc > 2) {propbox = 4;}else {propbox = 5;}break;}}} }//觸發道具效果 void Prop() {switch (propbox) {case 1:player.maxl++;player.life++;if (player.maxl > 5) {player.maxl = 5;}if (player.life > player.maxl) {player.life = player.maxl;}break;case 2:player.str++;if (player.str > 4) {player.str = 4;}break;case 3:player.mc--;if (player.mc < 0) {player.mc = 0;}break;case 4:player.sc -= 3;if (player.sc < 2) {player.sc = 2;}break;case 5:player.life++;if (player.life > player.maxl) {player.life = player.maxl;}break;}propt = refresh; }//玩家子彈飛行 void FlyBullet_player() {if (refresh % FlyBullet_P_C == 0) {for (int i = 1; i < ROW - 1; i++) {for (int j = 1; j < ROW - 1; j++) {if (map[i][j] == 5) {if (map[i - 1][j] == 0) {map[i - 1][j] = 5;map[i][j] = 0;}else {map[i][j] = 0;switch (map[i - 1][j]) {case 15:enemyA.life -= player.str;if (enemyA.life <= 0) {enemyA.life = 0;enemyA.dietime = refresh;player.score += enemyA.score;}break;case 20:enemyA.life -= player.str * 2;if (enemyA.life <= 0) {enemyA.life = 0;enemyA.dietime = refresh;player.score += enemyA.score * 2;}break;case 16:enemyB.life -= player.str;if (enemyB.life <= 0) {enemyB.life = 0;enemyB.dietime = refresh;player.score += enemyB.score;}break;case 21:enemyB.life -= player.str * 2;if (enemyB.life <= 0) {enemyB.life = 0;enemyB.dietime = refresh;player.score += enemyB.score * 2;}break;case 17:enemyC.life -= player.str;if (enemyC.life <= 0) {enemyC.life = 0;enemyC.dietime = refresh;player.score += enemyC.score;}break;case 22:enemyC.life -= player.str * 2;if (enemyC.life <= 0) {enemyC.life = 0;enemyC.dietime = refresh;player.score += enemyC.score * 2;}break;case 18:enemyD.life -= player.str;if (enemyD.life <= 0) {enemyD.life = 0;enemyD.dietime = refresh;player.score += enemyD.score;}break;case 23:enemyD.life -= player.str * 2;if (enemyD.life <= 0) {enemyD.life = 0;enemyD.dietime = refresh;player.score += enemyD.score * 2;}break;case 19:enemyE.life -= player.str;if (enemyE.life <= 0) {enemyE.life = 0;enemyE.dietime = refresh;player.score += enemyE.score;}break;case 24:enemyE.life -= player.str * 2;if (enemyE.life <= 0) {enemyE.life = 0;enemyE.dietime = refresh;player.score += enemyE.score * 2;}break;}}}if (map[i][j] == 8) {if (map[i][j - 1] == 0) {map[i][j - 1] = 8;map[i][j] = 0;}else {map[i][j] = 0;switch (map[i][j - 1]) {case 15:enemyA.life -= player.str;if (enemyA.life <= 0) {enemyA.life = 0;enemyA.dietime = refresh;player.score += enemyA.score;}break;case 20:enemyA.life -= player.str * 2;if (enemyA.life <= 0) {enemyA.life = 0;enemyA.dietime = refresh;player.score += enemyA.score * 2;}break;case 16:enemyB.life -= player.str;if (enemyB.life <= 0) {enemyB.life = 0;enemyB.dietime = refresh;player.score += enemyB.score;}break;case 21:enemyB.life -= player.str * 2;if (enemyB.life <= 0) {enemyB.life = 0;enemyB.dietime = refresh;player.score += enemyB.score * 2;}break;case 17:enemyC.life -= player.str;if (enemyC.life <= 0) {enemyC.life = 0;enemyC.dietime = refresh;player.score += enemyC.score;}break;case 22:enemyC.life -= player.str * 2;if (enemyC.life <= 0) {enemyC.life = 0;enemyC.dietime = refresh;player.score += enemyC.score * 2;}break;case 18:enemyD.life -= player.str;if (enemyD.life <= 0) {enemyD.life = 0;enemyD.dietime = refresh;player.score += enemyD.score;}break;case 23:enemyD.life -= player.str * 2;if (enemyD.life <= 0) {enemyD.life = 0;enemyD.dietime = refresh;player.score += enemyD.score * 2;}break;case 19:enemyE.life -= player.str;if (enemyE.life <= 0) {enemyE.life = 0;enemyE.dietime = refresh;player.score += enemyE.score;}break;case 24:enemyE.life -= player.str * 2;if (enemyE.life <= 0) {enemyE.life = 0;enemyE.dietime = refresh;player.score += enemyE.score * 2;}break;}}}if (map[ROW - 1 - i][ROW - 1 - j] == 6) {if (map[ROW - 1 - i][ROW - j] == 0) {map[ROW - 1 - i][ROW - j] = 6;map[ROW - 1 - i][ROW - 1 - j] = 0;}else {map[ROW - 1 - i][ROW - 1 - j] = 0;switch (map[ROW - 1 - i][ROW - j]) {case 15:enemyA.life -= player.str;if (enemyA.life <= 0) {enemyA.life = 0;enemyA.dietime = refresh;player.score += enemyA.score;}break;case 20:enemyA.life -= player.str * 2;if (enemyA.life <= 0) {enemyA.life = 0;enemyA.dietime = refresh;player.score += enemyA.score * 2;}break;case 16:enemyB.life -= player.str;if (enemyB.life <= 0) {enemyB.life = 0;enemyB.dietime = refresh;player.score += enemyB.score;}break;case 21:enemyB.life -= player.str * 2;if (enemyB.life <= 0) {enemyB.life = 0;enemyB.dietime = refresh;player.score += enemyB.score * 2;}break;case 17:enemyC.life -= player.str;if (enemyC.life <= 0) {enemyC.life = 0;enemyC.dietime = refresh;player.score += enemyC.score;}break;case 22:enemyC.life -= player.str * 2;if (enemyC.life <= 0) {enemyC.life = 0;enemyC.dietime = refresh;player.score += enemyC.score * 2;}break;case 18:enemyD.life -= player.str;if (enemyD.life <= 0) {enemyD.life = 0;enemyD.dietime = refresh;player.score += enemyD.score;}break;case 23:enemyD.life -= player.str * 2;if (enemyD.life <= 0) {enemyD.life = 0;enemyD.dietime = refresh;player.score += enemyD.score * 2;}break;case 19:enemyE.life -= player.str;if (enemyE.life <= 0) {enemyE.life = 0;enemyE.dietime = refresh;player.score += enemyE.score;}break;case 24:enemyE.life -= player.str * 2;if (enemyE.life <= 0) {enemyE.life = 0;enemyE.dietime = refresh;player.score += enemyE.score * 2;}break;}}}if (map[ROW - 1 - i][ROW - 1 - j] == 7) {if (map[ROW - i][ROW - 1 - j] == 0) {map[ROW - i][ROW - 1 - j] = 7;map[ROW - 1 - i][ROW - 1 - j] = 0;}else {map[ROW - 1 - i][ROW - 1 - j] = 0;switch (map[ROW - i][ROW - 1 - j]) {case 15:enemyA.life -= player.str;if (enemyA.life <= 0) {enemyA.life = 0;enemyA.dietime = refresh;player.score += enemyA.score;}break;case 20:enemyA.life -= player.str * 2;if (enemyA.life <= 0) {enemyA.life = 0;enemyA.dietime = refresh;player.score += enemyA.score * 2;}break;case 16:enemyB.life -= player.str;if (enemyB.life <= 0) {enemyB.life = 0;enemyB.dietime = refresh;player.score += enemyB.score;}break;case 21:enemyB.life -= player.str * 2;if (enemyB.life <= 0) {enemyB.life = 0;enemyB.dietime = refresh;player.score += enemyB.score * 2;}break;case 17:enemyC.life -= player.str;if (enemyC.life <= 0) {enemyC.life = 0;enemyC.dietime = refresh;player.score += enemyC.score;}break;case 22:enemyC.life -= player.str * 2;if (enemyC.life <= 0) {enemyC.life = 0;enemyC.dietime = refresh;player.score += enemyC.score * 2;}break;case 18:enemyD.life -= player.str;if (enemyD.life <= 0) {enemyD.life = 0;enemyD.dietime = refresh;player.score += enemyD.score;}break;case 23:enemyD.life -= player.str * 2;if (enemyD.life <= 0) {enemyD.life = 0;enemyD.dietime = refresh;player.score += enemyD.score * 2;}break;case 19:enemyE.life -= player.str;if (enemyE.life <= 0) {enemyE.life = 0;enemyE.dietime = refresh;player.score += enemyE.score;}break;case 24:enemyE.life -= player.str * 2;if (enemyE.life <= 0) {enemyE.life = 0;enemyE.dietime = refresh;player.score += enemyE.score * 2;}break;}}}}}} }//敵人子彈飛行 void FlyBullet_enemy() {if (refresh % FlyBullet_E_C == 0) {for (int i = 1; i < ROW - 1; i++) {for (int j = 1; j < ROW - 1; j++) {if (map[i][j] == 11) {if (map[i - 1][j] == 0) {map[i - 1][j] = 11;map[i][j] = 0;}else {map[i][j] = 0;if (map[i - 1][j] == 2 || map[i - 1][j] == 4) {if (player.life > 0) {player.life--;player.dietime = refresh;}}}}if (map[i][j] == 14) {if (map[i][j - 1] == 0) {map[i][j - 1] = 14;map[i][j] = 0;}else {map[i][j] = 0;if (map[i][j - 1] == 2 || map[i][j - 1] == 4) {if (player.life > 0) {player.life--;player.dietime = refresh;}}}}if (map[ROW - 1 - i][ROW - 1 - j] == 12) {if (map[ROW - 1 - i][ROW - j] == 0) {map[ROW - 1 - i][ROW - j] = 12;map[ROW - 1 - i][ROW - 1 - j] = 0;}else {map[ROW - 1 - i][ROW - 1 - j] = 0;if (map[ROW - 1 - i][ROW - j] == 2 || map[ROW - 1 - i][ROW - j] == 4) {if (player.life > 0) {player.life--;player.dietime = refresh;}}}}if (map[ROW - 1 - i][ROW - 1 - j] == 13) {if (map[ROW - i][ROW - 1 - j] == 0) {map[ROW - i][ROW - 1 - j] = 13;map[ROW - 1 - i][ROW - 1 - j] = 0;}else {map[ROW - 1 - i][ROW - 1 - j] = 0;if (map[ROW - i][ROW - 1 - j] == 2 || map[ROW - i][ROW - 1 - j] == 4) {if (player.life > 0) {player.life--;player.dietime = refresh;}}}}}}} }//敵人A移動——碰到障礙逆時針轉圈,周期隨機改變方向 void EnemyA_Move() {int i, j;if (enemyA.life > 0) {if (refresh - enemyA.mt > enemyA.mc) {if (refresh - enemyA.dirt > enemyA.dirc) {enemyA.rdir = rand() % 4 + 1;enemyA.dirt = refresh;}switch (enemyA.rdir) {case 1:if (map[enemyA.y - 2][enemyA.x] == 0 && map[enemyA.y - 2][enemyA.x - 1] == 0 && map[enemyA.y - 2][enemyA.x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[2 - j][i] = enemyA.shape[i][j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyA.y - 2 + i][enemyA.x - 1 + j] = empty[i][j];}}for (j = 0; j < 3; j++)map[enemyA.y - 2 + i][enemyA.x - 1 + j] = 0;enemyA.dir = 1;enemyA.mt = refresh;}else {enemyA.rdir = 2;enemyA.dirt = refresh;}break;case 2:if (map[enemyA.y][enemyA.x + 2] == 0 && map[enemyA.y - 1][enemyA.x + 2] == 0 && map[enemyA.y + 1][enemyA.x + 2] == 0) {for (i = 0; i < 3; i++)map[enemyA.y - 1 + i][enemyA.x - 1] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyA.y - 1 + i][enemyA.x + j] = enemyA.shape[i][j];}}enemyA.dir = 2;enemyA.mt = refresh;}else {enemyA.rdir = 3; enemyA.dirt = refresh;}break;case 3:if (map[enemyA.y + 2][enemyA.x] == 0 && map[enemyA.y + 2][enemyA.x - 1] == 0 && map[enemyA.y + 2][enemyA.x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[j][2 - i] = enemyA.shape[i][j];}}for (j = 0; j < 3; j++)map[enemyA.y - 1][enemyA.x - 1 + j] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyA.y + i][enemyA.x - 1 + j] = empty[i][j];}}enemyA.dir = 3;enemyA.mt = refresh;}else {enemyA.rdir = 4;enemyA.dirt = refresh;}break;case 4:if (map[enemyA.y][enemyA.x - 2] == 0 && map[enemyA.y - 1][enemyA.x - 2] == 0 && map[enemyA.y + 1][enemyA.x - 2] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[i][j] = enemyA.shape[i][2 - j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyA.y - 1 + i][enemyA.x - 2 + j] = empty[i][j];}}for (i = 0; i < 3; i++)map[enemyA.y - 1 + i][enemyA.x - 2 + j] = 0;enemyA.dir = 4;enemyA.mt = refresh;}else {enemyA.rdir = 1;enemyA.dirt = refresh;}break;}}if (refresh - enemyA.st > enemyA.sc) {//生成子彈if (enemyA.dir == 1 && map[enemyA.y - 2][enemyA.x] == 0) {map[enemyA.y - 2][enemyA.x] = 11;enemyA.st = refresh;}else if (enemyA.dir == 2 && map[enemyA.y][enemyA.x + 2] == 0) {map[enemyA.y][enemyA.x + 2] = 12;enemyA.st = refresh;}else if (enemyA.dir == 3 && map[enemyA.y + 2][enemyA.x] == 0) {map[enemyA.y + 2][enemyA.x] = 13;enemyA.st = refresh;}else if (enemyA.dir == 4 && map[enemyA.y][enemyA.x - 2] == 0) {map[enemyA.y][enemyA.x - 2] = 14;enemyA.st = refresh;};}}if(enemyA.life == 0)//被擊毀了{if (refresh - enemyA.dietime == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyA.y - 1 + i][enemyA.x - 1 + j] = 0;}}}else if (refresh - enemyA.dietime < 5) {map[enemyA.y][enemyA.x] = 10;}else if(refresh - enemyA.dietime >= 5 && refresh - enemyA.dietime < 10) {map[enemyA.y][enemyA.x] = 20;}else if (refresh - enemyA.dietime >= 10&& refresh - enemyA.dietime < 15) {map[enemyA.y][enemyA.x] = 10;}else if (refresh - enemyA.dietime == 15) {map[enemyA.y][enemyA.x] = 0;enemyA.life = -1;//刷新新坦克}} }//敵人B移動——碰到障礙順時針轉圈,周期隨機改變方向 void EnemyB_Move() {int i, j;if (enemyB.life > 0) {if (refresh - enemyB.mt > enemyB.mc) {if (refresh - enemyB.dirt > enemyB.dirc) {enemyB.rdir = rand() % 4 + 1;enemyB.dirt = refresh;}switch (enemyB.rdir) {case 1:if (map[enemyB.y - 2][enemyB.x] == 0 && map[enemyB.y - 2][enemyB.x - 1] == 0 && map[enemyB.y - 2][enemyB.x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[2 - j][i] = enemyB.shape[i][j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyB.y - 2 + i][enemyB.x - 1 + j] = empty[i][j];}}for (j = 0; j < 3; j++)map[enemyB.y - 2 + i][enemyB.x - 1 + j] = 0;enemyB.dir = 1;enemyB.mt = refresh;}else {enemyB.rdir = 4;enemyB.dirt = refresh;}break;case 2:if (map[enemyB.y][enemyB.x + 2] == 0 && map[enemyB.y - 1][enemyB.x + 2] == 0 && map[enemyB.y + 1][enemyB.x + 2] == 0) {for (i = 0; i < 3; i++)map[enemyB.y - 1 + i][enemyB.x - 1] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyB.y - 1 + i][enemyB.x + j] = enemyB.shape[i][j];}}enemyB.dir = 2;enemyB.mt = refresh;}else {enemyB.rdir = 1;enemyB.dirt = refresh;}break;case 3:if (map[enemyB.y + 2][enemyB.x] == 0 && map[enemyB.y + 2][enemyB.x - 1] == 0 && map[enemyB.y + 2][enemyB.x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[j][2 - i] = enemyB.shape[i][j];}}for (j = 0; j < 3; j++)map[enemyB.y - 1][enemyB.x - 1 + j] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyB.y + i][enemyB.x - 1 + j] = empty[i][j];}}enemyB.dir = 3;enemyB.mt = refresh;}else {enemyB.rdir = 2;enemyB.dirt = refresh;}break;case 4:if (map[enemyB.y][enemyB.x - 2] == 0 && map[enemyB.y - 1][enemyB.x - 2] == 0 && map[enemyB.y + 1][enemyB.x - 2] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[i][j] = enemyB.shape[i][2 - j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyB.y - 1 + i][enemyB.x - 2 + j] = empty[i][j];}}for (i = 0; i < 3; i++)map[enemyB.y - 1 + i][enemyB.x - 2 + j] = 0;enemyB.dir = 4;enemyB.mt = refresh;}else {enemyB.rdir = 3;enemyB.dirt = refresh;}break;}}if (refresh - enemyB.st > enemyB.sc) {//生成子彈if (enemyB.dir == 1 && map[enemyB.y - 2][enemyB.x] == 0) {map[enemyB.y - 2][enemyB.x] = 11;enemyB.st = refresh;}else if (enemyB.dir == 2 && map[enemyB.y][enemyB.x + 2] == 0) {map[enemyB.y][enemyB.x + 2] = 12;enemyB.st = refresh;}else if (enemyB.dir == 3 && map[enemyB.y + 2][enemyB.x] == 0) {map[enemyB.y + 2][enemyB.x] = 13;enemyB.st = refresh;}else if (enemyB.dir == 4 && map[enemyB.y][enemyB.x - 2] == 0) {map[enemyB.y][enemyB.x - 2] = 14;enemyB.st = refresh;};}}if (enemyB.life == 0)//被擊毀了{if (refresh - enemyB.dietime == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyB.y - 1 + i][enemyB.x - 1 + j] = 0;}}}else if (refresh - enemyB.dietime < 5) {map[enemyB.y][enemyB.x] = 10;}else if (refresh - enemyB.dietime >= 5 && refresh - enemyB.dietime < 10) {map[enemyB.y][enemyB.x] = 21;}else if (refresh - enemyB.dietime >= 10 && refresh - enemyB.dietime < 15) {map[enemyB.y][enemyB.x] = 10;}else if (refresh - enemyB.dietime == 15) {map[enemyB.y][enemyB.x] = 0;enemyB.life = -1;//刷新新坦克}} }//敵人C移動——碰到障礙順時針轉圈,周期隨機改變方向 void EnemyC_Move() {int i, j;if (enemyC.life > 0) {if (refresh - enemyC.mt > enemyC.mc) {if (refresh - enemyC.dirt > enemyC.dirc) {enemyC.rdir = rand() % 4 + 1;enemyC.dirt = refresh;}switch (enemyC.rdir) {case 1:if (map[enemyC.y - 2][enemyC.x] == 0 && map[enemyC.y - 2][enemyC.x - 1] == 0 && map[enemyC.y - 2][enemyC.x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[2 - j][i] = enemyC.shape[i][j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyC.y - 2 + i][enemyC.x - 1 + j] = empty[i][j];}}for (j = 0; j < 3; j++)map[enemyC.y - 2 + i][enemyC.x - 1 + j] = 0;enemyC.dir = 1;enemyC.mt = refresh;}else {enemyC.rdir = 4;enemyC.dirt = refresh;}break;case 2:if (map[enemyC.y][enemyC.x + 2] == 0 && map[enemyC.y - 1][enemyC.x + 2] == 0 && map[enemyC.y + 1][enemyC.x + 2] == 0) {for (i = 0; i < 3; i++)map[enemyC.y - 1 + i][enemyC.x - 1] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyC.y - 1 + i][enemyC.x + j] = enemyC.shape[i][j];}}enemyC.dir = 2;enemyC.mt = refresh;}else {enemyC.rdir = 1;enemyC.dirt = refresh;}break;case 3:if (map[enemyC.y + 2][enemyC.x] == 0 && map[enemyC.y + 2][enemyC.x - 1] == 0 && map[enemyC.y + 2][enemyC.x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[j][2 - i] = enemyC.shape[i][j];}}for (j = 0; j < 3; j++)map[enemyC.y - 1][enemyC.x - 1 + j] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyC.y + i][enemyC.x - 1 + j] = empty[i][j];}}enemyC.dir = 3;enemyC.mt = refresh;}else {enemyC.rdir = 2;enemyC.dirt = refresh;}break;case 4:if (map[enemyC.y][enemyC.x - 2] == 0 && map[enemyC.y - 1][enemyC.x - 2] == 0 && map[enemyC.y + 1][enemyC.x - 2] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[i][j] = enemyC.shape[i][2 - j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyC.y - 1 + i][enemyC.x - 2 + j] = empty[i][j];}}for (i = 0; i < 3; i++)map[enemyC.y - 1 + i][enemyC.x - 2 + j] = 0;enemyC.dir = 4;enemyC.mt = refresh;}else {enemyC.rdir = 3;enemyC.dirt = refresh;}break;}}if (refresh - enemyC.st > enemyC.sc) {//生成子彈if (enemyC.dir == 1 && map[enemyC.y - 2][enemyC.x] == 0) {map[enemyC.y - 2][enemyC.x] = 11;enemyC.st = refresh;}else if (enemyC.dir == 2 && map[enemyC.y][enemyC.x + 2] == 0) {map[enemyC.y][enemyC.x + 2] = 12;enemyC.st = refresh;}else if (enemyC.dir == 3 && map[enemyC.y + 2][enemyC.x] == 0) {map[enemyC.y + 2][enemyC.x] = 13;enemyC.st = refresh;}else if (enemyC.dir == 4 && map[enemyC.y][enemyC.x - 2] == 0) {map[enemyC.y][enemyC.x - 2] = 14;enemyC.st = refresh;};}}if (enemyC.life == 0)//被擊毀了{if (refresh - enemyC.dietime == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyC.y - 1 + i][enemyC.x - 1 + j] = 0;}}}else if (refresh - enemyC.dietime < 5) {map[enemyC.y][enemyC.x] = 10;}else if (refresh - enemyC.dietime >= 5 && refresh - enemyC.dietime < 10) {map[enemyC.y][enemyC.x] = 22;}else if (refresh - enemyC.dietime >= 10 && refresh - enemyC.dietime < 15) {map[enemyC.y][enemyC.x] = 10;}else if (refresh - enemyC.dietime == 15) {map[enemyC.y][enemyC.x] = 0;enemyC.life = -1;//刷新新坦克}} }//敵人D移動——碰到障礙逆時針轉圈,周期隨機改變方向 void EnemyD_Move() {int i, j;if (enemyD.life > 0) {if (refresh - enemyD.mt > enemyD.mc) {if (refresh - enemyD.dirt > enemyD.dirc) {enemyD.rdir = rand() % 4 + 1;enemyD.dirt = refresh;}switch (enemyD.rdir) {case 1:if (map[enemyD.y - 2][enemyD.x] == 0 && map[enemyD.y - 2][enemyD.x - 1] == 0 && map[enemyD.y - 2][enemyD.x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[2 - j][i] = enemyD.shape[i][j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyD.y - 2 + i][enemyD.x - 1 + j] = empty[i][j];}}for (j = 0; j < 3; j++)map[enemyD.y - 2 + i][enemyD.x - 1 + j] = 0;enemyD.dir = 1;enemyD.mt = refresh;}else {enemyD.rdir = 2;enemyD.dirt = refresh;}break;case 2:if (map[enemyD.y][enemyD.x + 2] == 0 && map[enemyD.y - 1][enemyD.x + 2] == 0 && map[enemyD.y + 1][enemyD.x + 2] == 0) {for (i = 0; i < 3; i++)map[enemyD.y - 1 + i][enemyD.x - 1] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyD.y - 1 + i][enemyD.x + j] = enemyD.shape[i][j];}}enemyD.dir = 2;enemyD.mt = refresh;}else {enemyD.rdir = 3;enemyD.dirt = refresh;}break;case 3:if (map[enemyD.y + 2][enemyD.x] == 0 && map[enemyD.y + 2][enemyD.x - 1] == 0 && map[enemyD.y + 2][enemyD.x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[j][2 - i] = enemyD.shape[i][j];}}for (j = 0; j < 3; j++)map[enemyD.y - 1][enemyD.x - 1 + j] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyD.y + i][enemyD.x - 1 + j] = empty[i][j];}}enemyD.dir = 3;enemyD.mt = refresh;}else {enemyD.rdir = 4;enemyD.dirt = refresh;}break;case 4:if (map[enemyD.y][enemyD.x - 2] == 0 && map[enemyD.y - 1][enemyD.x - 2] == 0 && map[enemyD.y + 1][enemyD.x - 2] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[i][j] = enemyD.shape[i][2 - j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyD.y - 1 + i][enemyD.x - 2 + j] = empty[i][j];}}for (i = 0; i < 3; i++)map[enemyD.y - 1 + i][enemyD.x - 2 + j] = 0;enemyD.dir = 4;enemyD.mt = refresh;}else {enemyD.rdir = 1;enemyD.dirt = refresh;}break;}}if (refresh - enemyD.st > enemyD.sc) {//生成子彈if (enemyD.dir == 1 && map[enemyD.y - 2][enemyD.x] == 0) {map[enemyD.y - 2][enemyD.x] = 11;enemyD.st = refresh;}else if (enemyD.dir == 2 && map[enemyD.y][enemyD.x + 2] == 0) {map[enemyD.y][enemyD.x + 2] = 12;enemyD.st = refresh;}else if (enemyD.dir == 3 && map[enemyD.y + 2][enemyD.x] == 0) {map[enemyD.y + 2][enemyD.x] = 13;enemyD.st = refresh;}else if (enemyD.dir == 4 && map[enemyD.y][enemyD.x - 2] == 0) {map[enemyD.y][enemyD.x - 2] = 14;enemyD.st = refresh;};}}if (enemyD.life == 0)//被擊毀了{if (refresh - enemyD.dietime == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyD.y - 1 + i][enemyD.x - 1 + j] = 0;}}}else if (refresh - enemyD.dietime < 5) {map[enemyD.y][enemyD.x] = 10;}else if (refresh - enemyD.dietime >= 5 && refresh - enemyD.dietime < 10) {map[enemyD.y][enemyD.x] = 23;}else if (refresh - enemyD.dietime >= 10 && refresh - enemyD.dietime < 15) {map[enemyD.y][enemyD.x] = 10;}else if (refresh - enemyD.dietime == 15) {map[enemyD.y][enemyD.x] = 0;enemyD.life = -1;//刷新新坦克}} }//敵人E移動——智(障)能移動 void EnemyE_Move() {int i, j;if (enemyE.life > 0) {if (enemyE.x > player.x) {enemyE.rdir = 4;}else if(enemyE.x < player.x) {enemyE.rdir = 2;}else {if (enemyE.y > player.y) {enemyE.rdir = 1;}else {enemyE.rdir = 3;}}if (refresh - enemyE.mt > enemyE.mc) {switch (enemyE.rdir) {case 1:if (map[enemyE.y - 2][enemyE.x] == 0 && map[enemyE.y - 2][enemyE.x - 1] == 0 && map[enemyE.y - 2][enemyE.x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[2 - j][i] = enemyE.shape[i][j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyE.y - 2 + i][enemyE.x - 1 + j] = empty[i][j];}}for (j = 0; j < 3; j++)map[enemyE.y - 2 + i][enemyE.x - 1 + j] = 0;enemyE.dir = 1;enemyE.mt = refresh;}else {enemyE.rdir = 2;}break;case 2:if (map[enemyE.y][enemyE.x + 2] == 0 && map[enemyE.y - 1][enemyE.x + 2] == 0 && map[enemyE.y + 1][enemyE.x + 2] == 0) {for (i = 0; i < 3; i++)map[enemyE.y - 1 + i][enemyE.x - 1] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyE.y - 1 + i][enemyE.x + j] = enemyE.shape[i][j];}}enemyE.dir = 2;enemyE.mt = refresh;}else {enemyE.rdir = 3;}break;case 3:if (map[enemyE.y + 2][enemyE.x] == 0 && map[enemyE.y + 2][enemyE.x - 1] == 0 && map[enemyE.y + 2][enemyE.x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[j][2 - i] = enemyE.shape[i][j];}}for (j = 0; j < 3; j++)map[enemyE.y - 1][enemyE.x - 1 + j] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyE.y + i][enemyE.x - 1 + j] = empty[i][j];}}enemyE.dir = 3;enemyE.mt = refresh;}else {enemyE.rdir = 4;}break;case 4:if (map[enemyE.y][enemyE.x - 2] == 0 && map[enemyE.y - 1][enemyE.x - 2] == 0 && map[enemyE.y + 1][enemyE.x - 2] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[i][j] = enemyE.shape[i][2 - j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyE.y - 1 + i][enemyE.x - 2 + j] = empty[i][j];}}for (i = 0; i < 3; i++)map[enemyE.y - 1 + i][enemyE.x - 2 + j] = 0;enemyE.dir = 4;enemyE.mt = refresh;}else {enemyE.rdir = 1;}break;}}if (refresh - enemyE.st > enemyE.sc) {//生成子彈if (enemyE.dir == 1 && map[enemyE.y - 2][enemyE.x] == 0) {map[enemyE.y - 2][enemyE.x] = 11;enemyE.st = refresh;}else if (enemyE.dir == 2 && map[enemyE.y][enemyE.x + 2] == 0) {map[enemyE.y][enemyE.x + 2] = 12;enemyE.st = refresh;}else if (enemyE.dir == 3 && map[enemyE.y + 2][enemyE.x] == 0) {map[enemyE.y + 2][enemyE.x] = 13;enemyE.st = refresh;}else if (enemyE.dir == 4 && map[enemyE.y][enemyE.x - 2] == 0) {map[enemyE.y][enemyE.x - 2] = 14;enemyE.st = refresh;};}}if (enemyE.life == 0)//被擊毀了{if (refresh - enemyE.dietime == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[enemyE.y - 1 + i][enemyE.x - 1 + j] = 0;}}}else if (refresh - enemyE.dietime < 5) {map[enemyE.y][enemyE.x] = 10;}else if (refresh - enemyE.dietime >= 5 && refresh - enemyE.dietime < 10) {map[enemyE.y][enemyE.x] = 24;}else if (refresh - enemyE.dietime >= 10 && refresh - enemyE.dietime < 15) {map[enemyE.y][enemyE.x] = 10;}else if (refresh - enemyE.dietime == 15) {map[enemyE.y][enemyE.x] = 0;enemyE.life = -1;//刷新新坦克}} }//敵人的移動模式一 void EnemyMove_mode1(int y,int x,int *dir,int life,int mt,int st,int dietime,int shape[3][3]) {//逆時針轉圈,周期隨機改變方向int i, j;if (life > 0) {if (refresh % 350 == 0) {*dir = rand() % 4 + 1;}if (refresh - mt > 30) {switch (*dir) {case 1:if (map[y - 2][x] == 0 && map[y - 2][x - 1] == 0 && map[y - 2][x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[2 - j][i] = shape[i][j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[y - 2 + i][x - 1 + j] = empty[i][j];}}for (j = 0; j < 3; j++) map[y - 2 + i][x - 1 + j] = 0;mt = refresh;}else *dir = 2;break;case 2:if (map[y][x + 2] == 0 && map[y - 1][x + 2] == 0 && map[y + 1][x + 2] == 0) {for (i = 0; i < 3; i++)map[y - 1 + i][x - 1] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[y - 1 + i][x + j] = shape[i][j];}}mt = refresh;}else *dir = 3;break;case 3:if (map[y + 2][x] == 0 && map[y + 2][x - 1] == 0 && map[y + 2][x + 1] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[j][2 - i] = shape[i][j];}}for (j = 0; j < 3; j++)map[y - 1][x - 1 + j] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[y + i][x - 1 + j] = empty[i][j];}}mt = refresh;}else *dir = 4;break;case 4:if (map[y][x - 2] == 0 && map[y - 1][x - 2] == 0 && map[y + 1][x - 2] == 0) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[i][j] = shape[i][2 - j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[y - 1 + i][x - 2 + j] = empty[i][j];}}for (i = 0; i < 3; i++)map[y - 1 + i][x - 2 + j] = 0;mt = refresh;}else *dir = 1;break;}}else if (refresh - st > 60) {if (*dir == 1 && map[y - 2][x] == 0) {map[y - 2][x] = 11;st = refresh;}else if (*dir == 2 && map[y][x + 2] == 0) {map[y][x + 2] = 12;st = refresh;}else if (*dir == 3 && map[y + 2][x] == 0) {map[y + 2][x] = 13;st = refresh;}else if (*dir == 4 && map[y][x - 2] == 0) {map[y][x - 2] = 14;st = refresh;};}}if (life == 0)//被擊毀了{if (refresh - dietime < 5) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[y - 1 + i][x - 1 + j] = 0;}}map[y][x] = 10;}else if (refresh - dietime >= 5 && refresh - dietime < 10) {map[y][x] = 21;}else if (refresh - dietime >= 10 && refresh - dietime < 15) {map[y][x] = 10;}else if (refresh - dietime == 15) {map[y][x] = 0;life = -1;//刷新新坦克}} }//判斷當前刷新點的九個格子是否都為空 int CreatePoint(int y, int x) {int flag = 0;for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if (map[y - 1 + i][x - 1 + j] == 0) {flag++;}}}if (flag == 9) {return 1;}else {return 0;} }//創建敵人 void Create_Enemy() {EnemyA_Move();//EnemyMove_mode1(enemyA.y,enemyA.x,enemyA.dir,enemyA.life,enemyA.mt,enemyA.st,enemyA.dietime,enemyA.shape);if (enemyA.life == -1 && refresh - enemyA.dietime > 140) {int n = rand() % 5;enemyA.dir = rand() % 4 + 1;if (CreatePoint(cp[n].y, cp[n].x)) {for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {map[cp[n].y - 1 + i][cp[n].x - 1 + j] = enemyA.shape[i][j];}}enemyA.score = 1;enemyA.life = 2;enemyA.mc = 25;enemyA.sc = 60;enemyA.rdir = 2;enemyA.dirc = 1000;}}EnemyB_Move();//EnemyMove_mode1(enemyB.y, enemyB.x, enemyB.dir, enemyB.life, enemyB.mt, enemyB.st, enemyB.dietime, enemyB.shape);if (enemyB.life == -1 && refresh - enemyB.dietime > 30) {int n = rand() % 5;enemyB.dir = rand() % 4 + 1;if (CreatePoint(cp[n].y, cp[n].x)) {for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {map[cp[n].y - 1 + i][cp[n].x - 1 + j] = enemyB.shape[i][j];}}enemyB.score = 1;enemyB.life = 2;enemyB.mc = 25;enemyB.sc = 50;enemyB.dirc = 300;}}EnemyC_Move();if (enemyC.life == -1 && refresh - enemyC.dietime > 80) {int n = rand() % 5;enemyC.dir = rand() % 4 + 1;if (CreatePoint(cp[n].y, cp[n].x)) {for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {map[cp[n].y - 1 + i][cp[n].x - 1 + j] = enemyC.shape[i][j];}}enemyC.score = 2;enemyC.life = 4;enemyC.mc = 10;enemyC.sc = 25;enemyC.dirc = 80;}}EnemyD_Move();if (enemyD.life == -1 && refresh - enemyD.dietime > 150) {int n = rand() % 5;enemyD.dir = rand() % 4 + 1;if (CreatePoint(cp[n].y, cp[n].x)) {for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {map[cp[n].y - 1 + i][cp[n].x - 1 + j] = enemyD.shape[i][j];}}enemyD.score = 2;enemyD.life = 4;enemyD.mc = 8;enemyD.sc = 20;enemyD.dirc = 200;}}EnemyE_Move();if (enemyE.life == -1 && refresh - enemyE.dietime > 500) {int n = rand() % 5;enemyE.dir = rand() % 4 + 1;if (CreatePoint(cp[n].y, cp[n].x)) {for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {map[cp[n].y - 1 + i][cp[n].x - 1 + j] = enemyE.shape[i][j];}}enemyE.score = 5;enemyE.life = 7;enemyE.mc = 3;enemyE.sc = 10;}} }//定位玩家和敵人的坐標 void Location() {int cont = 0;for (int y = 1; y < ROW - 1; y++) {for (int x = 1; x < ROW - 1; x++) {if (map[y][x] != 25) {cont++;}if (cont == (ROW - 2) * (ROW - 2)) {propflag = 1;}else {propflag = 0;}switch (map[y][x]) {case 4:player.x = x;player.y = y;break;case 20:enemyA.x = x;enemyA.y = y;break;case 21:enemyB.x = x;enemyB.y = y;break;case 22:enemyC.x = x;enemyC.y = y;break;case 23:enemyD.x = x;enemyD.y = y;break;case 24:enemyE.x = x;enemyE.y = y;break;}}} }//玩家按鍵移動 void PlayGame() {int i, j;//判斷玩家是否存活if (player.life == 0) {if (refresh - player.dietime < 10) {for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[player.y - 1 + i][player.x - 1 + j] = 0;}}map[player.y][player.x] = 10;return;}else if (refresh - player.dietime >= 10 && refresh - player.dietime < 20) {map[player.y][player.x] = 9;return;}else if (refresh - player.dietime >= 20 && refresh - player.dietime < 30) {map[player.y][player.x] = 10;return;}else {map[player.y][player.x] = 0;player.life = -1;//游戲結束 程序結束return;}}if (kbhit()) {if (refresh - player.mt > player.mc) {switch (_getch()) {case 'a'://左移動if ((map[player.y][player.x - 2] == 0 || map[player.y][player.x - 2] == 25)&& (map[player.y - 1][player.x - 2] == 0 || map[player.y - 1][player.x - 2] == 25)&& (map[player.y + 1][player.x - 2] == 0 || map[player.y + 1][player.x - 2] == 25)) {if (map[player.y][player.x - 2] == 25 || map[player.y - 1][player.x - 2] == 25 || map[player.y + 1][player.x - 2] == 25) {Prop();}player.dir = 4;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[2 - j][i] = Player[i][j];}}for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[player.y - 1 + i][player.x - 2 + j] = empty[i][j];}}for (i = 0; i < 3; i++)map[player.y - 1 + i][player.x - 2 + j] = 0;player.mt = refresh;}break;case 'd'://右移動if ((map[player.y][player.x + 2] == 0 || map[player.y][player.x + 2] == 25) && (map[player.y - 1][player.x + 2] == 0 || map[player.y - 1][player.x + 2] == 25) && (map[player.y + 1][player.x + 2] == 0 || map[player.y + 1][player.x + 2] == 25)) {if (map[player.y + 1][player.x + 2] == 25 || map[player.y - 1][player.x + 2] == 25 || map[player.y][player.x + 2] == 25) {Prop();}player.dir = 2;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[j][2 - i] = Player[i][j];}}for (i = 0; i < 3; i++)map[player.y - 1 + i][player.x - 1] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[player.y - 1 + i][player.x + j] = empty[i][j];}}player.mt = refresh;}break;case 'w'://上移動if ((map[player.y - 2][player.x] == 0 || map[player.y - 2][player.x] == 25) && (map[player.y - 2][player.x - 1] == 0 || map[player.y - 2][player.x - 1] == 25) && (map[player.y - 2][player.x + 1] == 0 || map[player.y - 2][player.x + 1] == 25)) {if (map[player.y - 2][player.x] == 25 || map[player.y - 2][player.x - 1] == 25 || map[player.y - 2][player.x + 1] == 25) {Prop();}player.dir = 1;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[player.y - 2 + i][player.x - 1 + j] = Player[i][j];}}for (j = 0; j < 3; j++)map[player.y - 2 + i][player.x - 1 + j] = 0;player.mt = refresh;}break;case 's'://下移動if ((map[player.y + 2][player.x] == 0 || map[player.y + 2][player.x] == 25) && (map[player.y + 2][player.x - 1] == 0 || map[player.y + 2][player.x - 1] == 25) && (map[player.y + 2][player.x + 1] == 0 || map[player.y + 2][player.x + 1] == 25)) {if (map[player.y + 2][player.x] == 25 || map[player.y + 2][player.x - 1] == 25 || map[player.y + 2][player.x + 1] == 25) {Prop();}player.dir = 3;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {empty[i][j] = Player[2 - i][j];}}for (j = 0; j < 3; j++)map[player.y - 1][player.x - 1 + j] = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3; j++) {map[player.y + i][player.x - 1 + j] = empty[i][j];}};player.mt = refresh;}break;case 'q'://射擊 生成子彈if (refresh - player.st > player.sc) {if (player.dir == 1 && map[player.y - 2][player.x] == 0) {map[player.y - 2][player.x] = 5;}else if (player.dir == 2 && map[player.y][player.x + 2] == 0) {map[player.y][player.x + 2] = 6;}else if (player.dir == 3 && map[player.y + 2][player.x] == 0) {map[player.y + 2][player.x] = 7;}else if (player.dir == 4 && map[player.y][player.x - 2] == 0) {map[player.y][player.x - 2] = 8;};player.st = refresh;}break;}}} }//清空地圖內容(不包括地圖的外部和框) void Clear() {HRGN rgn = CreateRectRgn(11, 11, 470, 470);// 創建一個矩形區域setcliprgn(rgn);// 將該矩形區域設置為裁剪區DeleteObject(rgn);// 不再使用 rgn,清理 rgn 占用的系統資源clearcliprgn();//清空裁剪區的屏幕內容setcliprgn(NULL);// 取消之前設置的裁剪區 }//重開游戲 void Restart() {MOUSEMSG m;m = GetMouseMsg();setlinecolor(BLUE);setlinestyle(NULL, 3);setfillcolor(WHITE);settextcolor(RED);fillrectangle(520, 200, 600, 240);outtextxy(530, 213, "重新開始");fillrectangle(520, 250, 600, 290);outtextxy(530, 263, "結束游戲");if (m.x >= 520 && m.x <= 600 && m.y >= 200 && m.y <= 240) {Clear();GameStart();}if (m.x >= 520 && m.x <= 600 && m.y >= 250 && m.y <= 290) {exit(0);} }int main() {srand((unsigned)time(NULL));GameStart();while (player.life>=0) {GameState();FlyBullet_enemy();FlyBullet_player();Create_Enemy();Clear();Location();PlayGame();DrawMap();Create_prop();Sleep(30);refresh++;}MessageBox(GetHWnd(), "游戲結束", "SORRY", MB_OK);exit(0);closegraph(); }

?

總結

以上是生活随笔為你收集整理的“坦克大战”小游戏(C语言)源代码及其详解注释的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

精品免费 | 亚洲黄色免费 | 国产精品久久av | av中文字幕日韩 | 亚洲 欧美 精品 | 成人免费一区二区三区在线观看 | 国产视频久久 | 欧美色道 | 黄色免费网 | 丁香六月婷婷综合 | 九九视频网 | 成人av中文字幕在线观看 | 中文字幕在线乱 | 99久久精品免费看国产一区二区三区 | 国产成人三级在线观看 | 成年人电影毛片 | 在线天堂中文在线资源网 | 久久综合色天天久久综合图片 | 麻豆国产精品va在线观看不卡 | 欧美日韩综合在线 | 日韩免费三区 | 91私密保健 | 91人人揉日日捏人人看 | 色com| 五月婷影院| 在线视频 区 | 中文在线a∨在线 | 中文字幕国产一区二区 | 91在线精品秘密一区二区 | 97超碰资源网 | 天天操操操操操 | 欧美a在线看 | 97香蕉久久超级碰碰高清版 | 欧美一级爽| 91超国产| 国产成人黄色av | 日本不卡久久 | 黄在线免费看 | 中文字幕在线看片 | 欧美精品中文 | a在线一区 | 日韩特级毛片 | 久久高清国产 | 成人禁用看黄a在线 | 日本中文字幕在线免费观看 | 亚洲欧美视频一区二区三区 | 精品久久久久久久久久久久久久久久 | 热re99久久精品国产66热 | 手机看片1042 | 麻豆免费在线视频 | 91视频久久 | 五月婷婷开心中文字幕 | 激情片av | 久草在线最新免费 | 亚洲欧美日韩精品一区二区 | 天堂av在线网 | 国产精品成人av在线 | 亚洲资源在线观看 | 97精品国产一二三产区 | 99精品国产一区二区 | 国产免费一区二区三区最新 | 91精品国产一区 | 国产经典av | 男女免费av| 国产盗摄精品一区二区 | 日韩精品一区二区三区电影 | 五月天六月色 | 久久精品亚洲国产 | 久青草视频在线观看 | 69亚洲乱| 91香蕉视频色版 | 精品国模一区二区 | 精品视频在线免费观看 | 成人av电影在线观看 | 美女福利视频一区二区 | 在线播放你懂 | 国产精品美乳一区二区免费 | 8x成人在线 | www日日 | 免费在线色电影 | 久久久国产精品一区二区三区 | 国产精品久久久毛片 | 狠狠色丁香婷婷综合久小说久 | 国产黄 | 欧美性色黄大片在线观看 | 亚洲精品乱码久久久久久9色 | 日韩理论电影在线观看 | 国产精品一级在线 | av免费福利 | 国产精品一区在线 | 91视频黄色 | 国产精品自产拍在线观看 | 国产在线免费 | 热热热热热色 | 不卡的一区二区三区 | 国产成人高清 | 午夜婷婷在线播放 | 国产美女精品视频免费观看 | 久久伊人热 | 操操操操网 | 97在线观看免费高清完整版在线观看 | www免费看片com | 在线观看韩国av | 日韩在线观看高清 | 国产黄色一级片在线 | 国产精品网站一区二区三区 | 99视频国产精品免费观看 | 国产资源精品在线观看 | 911av视频 | 经典三级一区 | 干天天 | 亚洲精品美女久久久久 | 亚洲黄色小说网址 | 欧美精品v国产精品 | 日日夜夜人人天天 | 国产精品99久久久久久小说 | 国产中文字幕免费 | 国产精品欧美日韩 | 国产成人在线免费观看 | 99久久精品免费看国产四区 | 91视频久久久久 | 天天干天天操天天操 | 亚洲日本精品视频 | 亚洲精品乱码久久久久久写真 | 丁香在线观看完整电影视频 | 福利视频午夜 | 日本精品视频在线播放 | 日本性生活一级片 | 色九九影院| 91麻豆国产福利在线观看 | 日本久久精品视频 | 久草综合在线观看 | 啪啪动态视频 | 国产精品视频app | 久久久免费毛片 | 四虎海外影库www4hu | 99久e精品热线免费 99国产精品久久久久久久久久 | 国产探花 | 日韩av网站在线播放 | av九九九| 久久午夜羞羞影院 | 99精品在线视频播放 | 五月天婷婷在线播放 | 午夜免费福利视频 | 国产一区二区视频在线播放 | 中文字幕久久网 | 欧美成a人片在线观看久 | 久久激情五月激情 | 日本高清中文字幕有码在线 | 日韩成人免费在线电影 | 四虎在线免费观看 | 国产一区高清在线观看 | 欧美成人视 | 视频91| 亚洲一二三久久 | 少妇超碰在线 | 在线观看www. | 欧洲精品亚洲精品 | 99久久久国产精品 | 国产精品一区二区三区在线免费观看 | 国产99久久九九精品免费 | 国产精品v欧美精品v日韩 | 久久久久久久电影 | 麻豆 videos| a级国产片 | 欧美久久久久久久久久久 | 丁香婷婷激情国产高清秒播 | 91精品国产自产老师啪 | 99在线免费视频 | 成人精品一区二区三区中文字幕 | 黄色的片子 | 精品国产乱码久久久久久1区2匹 | 五月天激情开心 | 97国产超碰 | 波多野结衣在线视频免费观看 | 香蕉影院在线 | 亚洲做受高潮欧美裸体 | 一区二区三区四区在线 | 久久久久国产精品午夜一区 | av手机在线播放 | 天天色天天搞 | 久久成人资源 | 成人一区二区三区在线观看 | 日日夜夜爱| 日韩成人高清在线 | 嫩草伊人久久精品少妇av | 日韩理论在线观看 | 91精品啪| 欧美一二三区播放 | 激情婷婷综合 | 中文字幕视频免费观看 | 国产麻豆精品久久一二三 | 91桃色视频 | 91视频观看免费 | 成人动漫视频在线 | 91视频久久 | 国产精品 久久 | 五月婷激情 | 欧美成人999 | 日韩h在线观看 | 五月婷婷在线视频 | 成人亚洲精品国产www | 三级毛片视频 | 国产不卡一区二区视频 | 亚洲精品xxxx | 免费手机黄色网址 | 91免费国产在线观看 | www.com黄色| 欧美精品乱码99久久影院 | 成年人网站免费观看 | 国产精品1区2区3区 久久免费视频7 | 叶爱av在线 | 蜜桃麻豆www久久囤产精品 | 在线看片中文字幕 | 亚洲精品黄色在线观看 | 欧美三级高清 | 91精品老司机久久一区啪 | 天天操夜 | 黄色在线观看网站 | 久久精品专区 | 久草久| 成人高清在线观看 | 午夜精品久久久99热福利 | 天天天色 | 美女久久久久久久久久 | 国产日韩中文字幕 | 精品中文字幕在线 | 九九热精品视频在线播放 | 久久综合桃花 | 日韩成片 | 爱爱av在线| 国产一及片 | 91成人免费看 | 久久伊人综合 | 色综合天天综合网国产成人网 | 天天操天天干天天爱 | 亚洲影音先锋 | 久爱综合 | 黄色软件在线看 | 国产精品一区免费观看 | 日韩精品中文字幕在线不卡尤物 | 日韩欧美精品一区二区三区经典 | 超碰久热 | 精品视频免费久久久看 | 国产免费午夜 | 色香蕉在线视频 | 午夜精品久久久久久久久久久久久久 | а天堂中文最新一区二区三区 | 久99久在线| 欧美成人黄色片 | 韩国av一区二区三区 | 黄色一级大片在线免费看国产一 | 亚洲最新合集 | 在线观看免费91 | 九九九在线观看视频 | 一区二区三区污 | 久久视频这里有精品 | 国产视频在 | 91精品国产综合久久久久久久 | 亚洲黄色在线播放 | 久碰视频在线观看 | av在线播放一区二区三区 | 成人av在线电影 | 欧美激情另类文学 | 综合色综合| 久久不射网站 | 精品一区二区久久久久久久网站 | 奇米先锋| 在线韩国电影免费观影完整版 | 91亚洲免费| 又黄又刺激视频 | 国产精品一区二区 91 | 五月天久久久久 | 嫩模bbw搡bbbb搡bbbb | 午夜丰满寂寞少妇精品 | 亚洲综合黄色 | 亚洲精品乱码 | 人人干人人做 | 91免费网站在线观看 | 狠日日| 香蕉精品在线观看 | 久草在线在线精品观看 | 天天爱天天干天天爽 | 狠狠色丁香婷综合久久 | www激情网| 成人av av在线 | 日本黄色免费播放 | 久久成年人 | 九热在线 | 开心激情久久 | 亚洲精品福利在线观看 | 香蕉视频色 | 亚洲第一区在线观看 | 91麻豆精品国产91 | 日精品在线观看 | 精品播放 | 国产麻豆视频在线观看 | 在线免费观看视频a | 综合色久| 成人午夜在线电影 | 在线免费观看视频 | 97视频资源 | 色欧美成人精品a∨在线观看 | 中文在线免费观看 | 天天草av | 久久精品久久国产 | 国产在线一区二区 | 欧美精品成人在线 | 综合av在线| 日韩在线观看网站 | 亚洲精品一区二区久 | 午夜少妇av | 免费看国产精品 | 在线影视 一区 二区 三区 | 国产精品99久久久久久久久 | 久草视频手机在线 | 亚洲男男gaygay无套同网址 | 久久精品高清视频 | 在线观看黄色免费视频 | 91亚洲精品国偷拍 | 在线观看国产成人av片 | 一区二区三区电影在线播 | 91丨九色丨蝌蚪丨对白 | 国产成人精品在线观看 | 欧美九九九 | 一区二区三区免费看 | 夜夜操网站 | 婷婷国产一区二区三区 | 欧美日韩二三区 | 日本成人中文字幕在线观看 | 一级片免费观看视频 | 色婷婷影视 | 成人av观看 | 亚洲天堂香蕉 | 国产精品一区二区在线看 | 超碰大片 | 成人精品电影 | av在线播放观看 | 成人免费观看视频大全 | 91色蜜桃| 天天综合网天天综合色 | 激情五月婷婷综合 | 免费视频成人 | 色婷婷在线观看视频 | 欧美激情精品久久久久 | 五月婷婷深开心 | 亚洲老妇xxxxxx | 亚洲日本一区二区在线 | 欧美久久久久久久久久久久 | 久久久久国产精品厨房 | 992tv在线观看网站 | 亚洲国产精品日韩 | 九色porny真实丨国产18 | 永久中文字幕 | 久久99精品视频 | av导航福利 | www黄在线| 久久免费视频3 | 国产伦精品一区二区三区高清 | 99精品在线观看 | 国产视频日韩视频欧美视频 | 在线看片一区 | 成人影视免费看 | 色爱区综合激月婷婷 | 国产在线精品二区 | 成人在线免费观看网站 | 国产精品免费成人 | 精品视频久久久 | 色吊丝在线永久观看最新版本 | 91久久电影 | 欧美国产大片 | 国产xvideos免费视频播放 | 国产在线观看黄 | 在线观看免费一区 | 亚洲免费av一区二区 | 日本三级人妇 | 99久久精品免费看国产免费软件 | 日韩精品一区二区三区丰满 | 中文字幕精品久久 | 天堂av最新网址 | 亚洲成av人电影 | 精品一区精品二区 | 成人a免费看 | 97色狠狠 | 亚洲做受高潮欧美裸体 | 亚洲综合成人婷婷小说 | 国产白浆视频 | 三级在线视频观看 | 成人欧美一区二区三区黑人麻豆 | 国产精品黑丝在线观看 | 精品字幕在线 | 国产不卡av在线播放 | 福利精品在线 | 国产美女久久久 | av在线永久免费观看 | 狠狠ri | 国产精品久久久久国产精品日日 | 国产天天爽 | 操夜夜操 | 伊甸园永久入口www 99热 精品在线 | 五月天六月婷 | a色视频 | 午夜精品一区二区三区免费 | 国产一二三四在线观看视频 | 婷婷色 亚洲 | 久久久久在线 | 18女毛片| 97香蕉久久国产在线观看 | 国产精品人人做人人爽人人添 | 九色福利视频 | 国产特级毛片aaaaaaa高清 | 亚洲精品黄色在线观看 | 亚州精品在线视频 | 91女神的呻吟细腰翘臀美女 | 超碰伊人网 | 在线最新av | 国产视频每日更新 | 亚洲mv大片欧洲mv大片免费 | 色综合天天狠狠 | 日韩中文字幕国产 | 久久曰视频 | 91麻豆传媒| 日本黄色一级电影 | 成人av在线直播 | 91精品在线免费观看 | 在线播放一区 | 在线一区观看 | 五月婷婷中文字幕 | 婷婷亚洲综合五月天小说 | 在线一二三四区 | 国产亚洲精品久久久久久移动网络 | 久久国产品| 成人在线播放视频 | 夜夜操天天操 | 色在线免费观看 | 日韩免费中文字幕 | 97在线公开视频 | 精品国产乱码久久久久久1区2匹 | 日韩欧在线 | 久草在线 | 99热99热 | av中文字幕第一页 | 毛片网在线 | 国产成人精品一区二区在线观看 | 91色在线观看视频 | 国产精品男女啪啪 | 国产网站av | 国产精品高清在线观看 | 亚洲国产精品女人久久久 | 成人免费一区二区三区在线观看 | 久草a视频| 国产精品99爱 | 免费日韩视 | 在线观看中文字幕亚洲 | 天天操比 | 国产精品免费一区二区 | 亚洲 av网站| 免费av网址大全 | 久久久久国产a免费观看rela | 91在线产啪 | 中文字幕免费高清av | 91成人小视频 | 五月婷婷综合在线 | 日韩黄色中文字幕 | 中文字幕在线资源 | 国产一区二区在线免费播放 | 国产精品观看在线亚洲人成网 | 久久久久久久久久久久久久免费看 | 九九九九热精品免费视频点播观看 | 国内久久久| 天天摸天天操天天爽 | 色五月成人 | 91av在线免费视频 | 亚洲人成网站精品片在线观看 | 国产精品久久麻豆 | 天天操天天干天天操天天干 | 在线岛国av | 性色av免费在线观看 | 狠狠狠狠狠狠干 | 午夜精品久久久久久久久久 | 最近最新中文字幕 | 国产一区欧美一区 | 免费在线观看成年人视频 | 午夜av在线播放 | 99久久这里有精品 | 中文字幕久久亚洲 | 热久久国产 | av成人资源 | 国产麻豆视频免费观看 | 日韩欧美v | 成人三级网站在线观看 | 91手机电视| 国产又黄又爽无遮挡 | 91成版人在线观看入口 | 日本精品视频免费 | 99视频偷窥在线精品国自产拍 | 九九在线免费视频 | 国产成人91 | 五月的婷婷 | 欧洲一区二区在线观看 | 亚洲欧美综合精品久久成人 | 欧美极度另类 | 欧美日韩国产精品一区 | 久久少妇 | 亚洲人成网站精品片在线观看 | 91麻豆国产 | 九九视频在线播放 | 午夜精品一区二区三区在线 | 久久久久久久久国产 | 国产一区电影在线观看 | 成人日批视频 | 国产精品自拍在线 | 久久五月婷婷丁香社区 | 99精彩视频在线观看免费 | 在线观看涩涩 | 天天射天天 | av成人在线网站 | 色香蕉在线视频 | 最新av在线网站 | a级国产乱理论片在线观看 特级毛片在线观看 | 亚洲免费观看在线视频 | 日韩簧片在线观看 | 欧美日韩国产综合一区二区 | 久草在线官网 | 黄色小说视频在线 | 91黄色小视频 | 久久久久高清 | 亚洲精品视频在线免费播放 | 91在线公开视频 | 精品在线视频播放 | 青青视频一区 | 丁香六月欧美 | av免费观看高清 | 看片网站黄色 | 国产精品对白一区二区三区 | а天堂中文最新一区二区三区 | 视频在线在亚洲 | 久久中文字幕视频 | 中文字幕免 | 久久成人高清 | 欧美成人亚洲 | 国产福利av在线 | av 一区二区三区四区 | 日韩视频免费在线观看 | 99国内精品久久久久久久 | 992tv成人免费看片 | 狠狠综合久久 | 国产精品黄色在线观看 | 中文字幕网站 | 成人国产精品久久久久久亚洲 | 日本高清xxxx| 99这里只有精品视频 | 亚洲人视频在线 | 99视频在线免费播放 | 91精品天码美女少妇 | 国产精品一区二区av | 国产精品毛片一区视频播不卡 | 日韩精选在线观看 | 免费大片黄在线 | 狠狠的操 | 欧美精品久久99 | 国产视频资源在线观看 | 国产精品久久久久久久午夜 | 久久成人高清视频 | avwww在线观看 | 国产91在线观 | 亚洲精品动漫在线 | 中文字幕第一页在线视频 | 亚洲区视频在线观看 | 日韩经典一区二区三区 | 精品福利在线观看 | 日韩精品中文字幕在线播放 | 久久99精品久久久久久三级 | 久久电影国产免费久久电影 | 美女在线免费观看视频 | 国产中文字幕一区 | 日韩午夜电影网 | 国产成人av | 久久理论电影网 | 亚洲欧洲国产视频 | 热99在线| 99久久99久久精品国产片果冰 | 香蕉网在线观看 | av千婊在线免费观看 | 永久免费观看视频 | 黄色的网站免费看 | 狠狠干成人 | 亚洲aⅴ在线观看 | 亚洲高清视频在线 | 天天久久综合 | 色午夜| 91精品91| 激情视频一区二区三区 | 天天综合天天做天天综合 | 亚洲精品 在线视频 | 国产精品免费观看国产网曝瓜 | 91九色网站 | 中文字幕文字幕一区二区 | 99国产精品久久久久久久久久 | 亚洲 欧美变态 另类 综合 | 免费观看黄 | 亚洲一区二区高潮无套美女 | av青草| 免费日韩视频 | 久久伦理 | 久久看片网站 | 国产69精品久久久久99尤 | 午夜精品久久久久久久久久久久 | 国内精品久久久久久久久 | 在线观看av的网站 | 九九天堂 | 久久av福利 | 黄色www | av不卡在线看 | 国产高清一区二区 | 成年人国产在线观看 | 免费婷婷| 国产亚洲婷婷 | 天天碰天天操 | 欧美日韩国产在线 | 久久精品中文 | 日韩一级片观看 | 久久国产精品免费观看 | 四虎影视国产精品免费久久 | 西西444www大胆高清视频 | 69av久久| 国产成人三级一区二区在线观看一 | 久久免费片 | 手机av在线网站 | 中文字幕永久 | a v在线视频 | 国产99黄| 成人av电影免费 | 天天色天天射天天操 | 国产精品美女999 | 又黄又爽又湿又无遮挡的在线视频 | 国产一级视频 | 免费一级片在线观看 | 伊人五月综合 | 99欧美精品 | 国产午夜精品一区 | www.久久成人 | 国产亚洲精品女人久久久久久 | 国产成人精品一区二区三区免费 | 2019中文字幕网站 | 国产精品国产三级国产aⅴ入口 | 日韩女同一区二区三区在线观看 | www五月天婷婷 | 91在线精品秘密一区二区 | 久久精品伊人 | 激情综合一区 | 欧美日韩在线视频一区 | 黄色美女免费网站 | 免费在线精品视频 | 亚洲精品中文在线观看 | 高清在线一区二区 | 九九九在线 | 日韩欧三级 | 天天弄天天干 | 国产在线视频不卡 | 中文字幕av免费观看 | 国产在线色站 | 国产精品视频观看 | 天天干天天插伊人网 | 91精品免费看 | 中文在线 | 成人一级在线观看 | 免费观看mv大片高清 | 日韩精品高清不卡 | 色91av | 天堂va在线高清一区 | 一区二区三区免费在线播放 | 六月丁香在线视频 | 免费看黄色毛片 | 免费观看第二部31集 | 麻豆影视网站 | 久久久久网站 | 又色又爽又黄高潮的免费视频 | 日日夜夜天天久久 | 免费国产亚洲视频 | 日日操网站 | 在线国产一区二区三区 | 超碰免费久久 | 亚洲视频免费在线观看 | 91在线观看高清 | 久久99亚洲热视 | 视频一区二区精品 | 国产精品一区欧美 | 91精品一区二区三区蜜臀 | 国内久久精品 | 色婷婷精品大在线视频 | 麻豆免费视频网站 | 免费日韩 精品中文字幕视频在线 | 日韩av免费在线看 | 日韩在线不卡av | 国产成人精品一区在线 | 五月天亚洲综合 | 综合视频在线 | 永久免费视频国产 | 天天综合久久综合 | 五月婷婷综合激情网 | 日日夜夜天天干 | 久久久久久久影视 | 日韩在线观看视频免费 | 国产精品一区二区白浆 | 99一级片 | 99热在线国产 | 国产香蕉97碰碰碰视频在线观看 | 亚洲影音先锋 | 国内外激情视频 | 黄色在线观看免费 | 日韩在线观看小视频 | 国产精品一区二区无线 | 中文字幕av最新更新 | 人人爽人人爽人人 | 99精品国产在热久久 | 手机成人免费视频 | 亚洲国产丝袜在线观看 | 国产精品99蜜臀久久不卡二区 | 久久精品三 | 天天射网站 | 亚洲免费在线观看视频 | 免费黄在线看 | 婷婷色在线视频 | 96av麻豆蜜桃一区二区 | 精品国产乱码久久久久久1区2匹 | 欧美日韩国产综合网 | 国产在线观看99 | 国产福利av在线 | 一区二区三区四区不卡 | 成人在线黄色 | 91av片| 探花视频网站 | 在线观看中文字幕av | 亚洲精品影视在线观看 | 日韩国产精品久久 | 看污网站 | 九九在线视频 | 日韩中文字幕免费在线观看 | 免费在线观看av网站 | 99在线视频观看 | 91日韩免费 | 国产精品久久视频 | 99精品久久久久久久久久综合 | 国产精品久久人 | 成人a视频 | 这里只有精品视频在线观看 | 五月天激情婷婷 | 三级a视频 | 欧美整片sss | 视色网站| 亚洲电影av在线 | 91精品视频在线免费观看 | 久草在线 | 久久久亚洲国产精品麻豆综合天堂 | 视频精品一区二区三区 | 中文字幕丝袜美腿 | 免费a视频在线观看 | 精品久久国产 | 91高清完整版在线观看 | 91视频久久久久久 | 久久久精品网站 | 久久久精品 一区二区三区 国产99视频在线观看 | 中文在线a√在线 | 午夜精品久久久久久久99 | 蜜臀av在线一区二区三区 | 久久国产精品久久精品国产演员表 | 免费进去里的视频 | 亚洲最大免费成人网 | 日本论理电影 | 蜜臀av一区二区 | 亚洲精品在线视频观看 | 999成人网| 日韩免费一二三区 | 日韩激情一二三区 | 狠狠操狠狠插 | 五月婷婷电影网 | 91香蕉视频在线下载 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲第二色 | 国产成人黄色在线 | 亚洲另类久久 | 五月花丁香婷婷 | 丝袜美腿在线播放 | 久久国产精品系列 | 综合久久久久久 | 国产精品麻豆一区二区三区 | 久草在线一免费新视频 | 久久成人高清视频 | 一本一本久久a久久精品综合 | 爱爱一区 | 亚洲精品国产精品乱码不99热 | 中文一区二区三区在线观看 | 亚洲综合在线播放 | 在线香蕉视频 | 久草在线久草在线2 | 九色91在线视频 | 91精品国产综合久久久久久久 | 91视频网址入口 | 国产亚洲欧美精品久久久久久 | 国产精品毛片久久久久久久 | av片在线观看 | 国产精品正在播放 | 亚洲欧洲av在线 | 黄色软件网站在线观看 | 中文字幕日本电影 | 午夜精品一区二区三区在线观看 | 亚洲天天综合网 | 美女久久久久久久久久久 | 久久新视频 | 国产精品久久久久久久久免费 | 久久99免费观看 | 国产999| 视频直播国产精品 | 国产免费久久久久 | 一区二区在线不卡 | 在线免费观看国产视频 | 麻豆精品在线 | 日韩精品免费专区 | 免费99精品国产自在在线 | 亚洲精品五月天 | 天堂素人在线 | 91看片在线观看 | 久久男人视频 | 精品伦理一区二区三区 | 久久精品国产亚洲aⅴ | 色资源网在线观看 | 亚洲精品裸体 | 国产一级免费视频 | 日韩欧美视频 | 超碰在97 | 成年人视频免费在线播放 | 91爱爱视频 | 久久免费视频6 | 成人国产精品久久久春色 | 一二区电影| 香蕉视频一级 | 国产a高清| 狠狠干夜夜操 | 丰满少妇久久久 | 丁香激情五月婷婷 | 国产日韩欧美在线一区 | 欧美极品少妇xxxx | 中文av在线免费观看 | 国产午夜在线观看 | 欧美一级视频免费 | 00av视频 | 亚洲视频免费在线看 | 国产精品电影在线 | 婷婷网站天天婷婷网站 | 91久久久国产精品 | 国产91学生粉嫩喷水 | 亚洲黄色在线观看 | 中文字幕日韩伦理 | 精品乱码一区二区三四区 | 六月丁香综合网 | 最新超碰在线 | 久久久久久久久久久高潮一区二区 | 在线观av| 91人人爽人人爽人人精88v | 亚洲国内精品在线 | 亚洲三区在线 | 国产99免费 | 免费www视频| 精品视频专区 | 国产成人一区二区精品非洲 | 国产亚洲精品久久久久久网站 | 欧美在线一级片 | 最近日本韩国中文字幕 | 亚洲春色综合另类校园电影 | 日韩一区二区三区不卡 | 亚洲国产高清在线观看视频 | 欧美久久久久久久久中文字幕 | 欧美韩国日本在线观看 | free. 性欧美.com| 久久综合九色九九 | 黄色软件在线观看免费 | 国产生活一级片 | 久久久久久久久久久精 | 日批视频在线观看免费 | 国产精品观看在线亚洲人成网 | av黄色影院 | 国产精品日韩久久久久 | 欧美作爱视频 | 欧美一级性生活视频 | 国产99久久久欧美黑人 | 国产精品久久久久久久久久 | 日韩黄色在线观看 | 国产精品粉嫩 | 精品国产亚洲一区二区麻豆 | 久久久久久久久影院 | 亚洲成人av电影 | 成人a级黄色片 | 亚洲精品国偷拍自产在线观看蜜桃 | 中文久久精品 | 免费高清在线一区 | 久久精品一区二区三区国产主播 | 国产精品久久久亚洲 | 国产一级特黄毛片在线毛片 | 99精彩视频| 五月天综合色 | 亚洲精品97 | 最近中文字幕视频完整版 | 四虎在线永久免费观看 | 国产97av | 国产精品二区在线观看 | 国产激情久久久 | 福利片视频区 | 久久好看免费视频 | 91日韩免费 | 欧美性做爰猛烈叫床潮 | 九九爱免费视频在线观看 | 国产精品高潮呻吟久久久久 | av动图 | 韩国在线一区二区 | 中国一区二区视频 | 玖玖视频在线 | 婷婷激情久久 | 精品国偷自产在线 | 麻豆视频在线免费观看 | 狠狠色丁香婷婷综合基地 | 天天综合网入口 | av一区在线播放 | 亚洲欧美怡红院 | 蜜臀av免费一区二区三区 | 手机av在线网站 | 久久综合九色综合欧美狠狠 | 日韩动漫免费观看高清完整版在线观看 | 久久99国产精品视频 | 在线观看蜜桃视频 | 精品日韩在线一区 | 在线视频 一区二区 | 午夜.dj高清免费观看视频 | www.亚洲精品| 国产麻豆成人传媒免费观看 | 中文字幕五区 | 久久久精品久久日韩一区综合 | 在线 视频 一区二区 | 色99色 | 国产精品不卡av | 久久国产精品久久w女人spa | 国产精品美女视频 | 亚洲精品777 | 亚洲欧美日韩国产一区二区三区 | 欧美一级艳片视频免费观看 | 精品久久1 | 久久久久久久99精品免费观看 | 国产一区成人 | 四虎影视久久久 | 精品久久久久久久 | 日韩手机在线观看 | freejavvideo日本免费 | 国产午夜精品一区二区三区四区 | 干天天| 91精品在线播放 | 亚洲国产一区二区精品专区 | 亚洲91中文字幕无线码三区 | 一区二区视频电影在线观看 | 国产美女主播精品一区二区三区 | zzijzzij日本成熟少妇 | 婷婷久久综合九色综合 | 亚洲一区二区三区毛片 | 日韩精品免费在线播放 | 国产午夜精品一区二区三区在线观看 | 久久久精品小视频 | 五月网婷婷 | 伊人狠狠色丁香婷婷综合 | 91成人免费观看视频 | 99这里只有久久精品视频 | 国产精品久久一区二区无卡 | 成人av一区二区三区 | 欧美性成人 | 成人少妇影院yyyy | 久久任你操| 日日干影院 | 99视频+国产日韩欧美 | 91污污视频在线观看 | 日韩av一区二区在线播放 | 国产免费又黄又爽 | 日韩在线观 | 久久天天草 | 国产精品久久久久久久婷婷 | 99在线精品视频观看 | 成人国产精品电影 | 999国内精品永久免费视频 | 国产成人一二片 | 99在线视频免费观看 | 国产福利91精品一区 | 国产黄色片网站 | 亚洲涩综合 | av动图| 国内精品视频一区二区三区八戒 | 中文字幕高清 | 亚洲成人精品久久 | 最近日本字幕mv免费观看在线 | 深爱激情五月网 | 成人cosplay福利网站 | 国产专区欧美专区 |