感謝您打開了這篇文章,下面我將講述一下推箱子是如何實現(xiàn)的。 另外附贈適配該程序簡單好用 專..."/>
您好,登錄后才能下訂單哦!
使用C語言實現(xiàn)超簡單的推箱子游戲,供大家參考,具體內(nèi)容如下/p>
感謝您打開了這篇文章,下面我將講述一下推箱子是如何實現(xiàn)的。
另外附贈適配該程序簡單好用 專屬推箱子地圖編輯器 讓您在16 * 16大地圖的條件下也能輕松編輯地圖。
鏈接:地圖編輯器
本程序在沒有檢測到地圖文件的情況下也能獨自運(yùn)行!代碼中儲存了推箱子游戲第一關(guān)的標(biāo)準(zhǔn)地圖,讓您在沒有地圖文件的情況下也能熟悉整個程序的流程!
當(dāng)然,擁有地圖文件會也會獲得更好的游戲體驗,請自行編輯。
廢話不多說!
下面進(jìn)入技術(shù)環(huán)節(jié):
C語言版 多功能推箱子
編譯環(huán)境: Windows VS2019
其他編譯器,可通過查看下文的“注意事項”將代碼更正為其他平臺可正常版本
需求:
控制人物將箱子推至目標(biāo)中,目標(biāo)全部完成進(jìn)入下一關(guān)。
思路:
使用二維數(shù)組儲存不同數(shù)字,數(shù)字包括了地圖中所有的元素,通過按鍵控制人物完成推箱子的操作,達(dá)成關(guān)卡內(nèi)的所有目標(biāo)后,自動進(jìn)入下一關(guān)。
做法:
主要邏輯移動推箱子部分:按下方向鍵后,雙重循環(huán)找到人物,根據(jù)移動方向儲存 人物、人物前面、箱子、箱子前面四大基礎(chǔ)信息,并通過判斷前方數(shù)組值是否是墻壁、目標(biāo)等,進(jìn)行人物移動和箱子移動操作。
具體詳細(xì)做法我已經(jīng)整理到了代碼注釋當(dāng)中,以便一一對應(yīng)查看。
使用到知識點:
循環(huán)、二維數(shù)組、讀取文件
難點:
在人物和箱子移動的同時,有需要注意當(dāng)人物移動到了未完成目標(biāo)或已完成目標(biāo)、箱子移動到了已完成目標(biāo)的情況,這種情況需要判斷在人物/箱子離開之后,原地又再次變?yōu)樵亍?/p>
說明:
程序前部分有較多代碼用于寫出未檢測到文件的情況邏輯和關(guān)卡選擇邏輯,如果要直接查看核心代碼請移動到operation();操作人物函數(shù)和gbszszhs(char ch);修改二維數(shù)組函數(shù)。
注意:
由于編譯器原因,程序中_kbhit()和_getch()函數(shù)可能在其他編譯器上編譯會出現(xiàn)錯誤,解決辦法是去掉函數(shù)前面的“_”。
同時,要將 文件打開函數(shù)fopen_s(&fp, FLPA, “r”);更改為fp = fopen(FLPA, “r”);
fcanf_s更改為fcanf scanf_s()更改為scanf
運(yùn)行效果:
菜單選擇:
游戲進(jìn)行:
代碼實現(xiàn):
#include <stdio.h> #include <windows.h> #include <conio.h> //0代表空地,1代表墻,2代表未達(dá)成的目標(biāo),3代表箱子,4代表玩家,5代表已放箱子的目標(biāo), //6代表人暫時所在的未達(dá)成的目標(biāo),7代表人暫時所在的已達(dá)成的目標(biāo),8代表箱子暫時所在的已達(dá)成的目標(biāo) #define WH 16 //地圖的寬高 #define BYT 529 //一關(guān)需要跳過的字?jǐn)?shù) 因為文件指針定位函數(shù)的原因,有時定位可能會不準(zhǔn)確,可以通過修改BYT進(jìn)行適配 #define FLPA "C:\\Users\\ASUS\\Desktop\\推箱子地圖.txt" //需要讀取地圖文件的路徑 游戲之前需進(jìn)行設(shè)置?。? //找不到路徑將只能進(jìn)行第一關(guān)游戲 //注意:游戲地圖邊界 不可以 當(dāng)做墻壁使用! #define INITMAP \ int mapch_init[WH][WH] = { \ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0}, \ {0, 0, 0, 0, 1, 1, 1, 3, 0, 3, 2, 1, 0, 0, 0, 0}, \ {0, 0, 0, 0, 1, 2, 0, 3, 4, 1, 1, 1, 0, 0, 0, 0}, \ {0, 0, 0, 0, 1, 1, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \ }; int mapch[WH][WH]; //所有函數(shù)之間不是獨立和順序的,會互相調(diào)用 void HideCursor(); //隱藏光標(biāo) void gotoxy(int x, int y);//光標(biāo)定位 void scmbxyhs(); //輸出地圖下方文字信息函數(shù) void wjzdwjzjjrqk(); //未找到文件直接進(jìn)入第一關(guān)情況 int gkxzhs(); //關(guān)卡選擇函數(shù) void cwjzjrwkdhs(); //從文件中進(jìn)入關(guān)卡的函數(shù) void gnxzjm(); //主菜單選擇 void cshhs(); //初始化函數(shù) void tranmap(); //翻譯并畫出地圖 void detection(); //尋找所有該地圖中未完成的目標(biāo) void gktgszxhs(); //判斷關(guān)卡是否通過,是進(jìn)行下一關(guān)卡 void operation(); //操作人物主要函數(shù)*** void gbszszhs(char ch); //改變數(shù)組數(shù)值函數(shù) int updatetime(); //獲取一次電腦現(xiàn)在的時間 void process(); //主要流程 int main() { cshhs(); //初始化函數(shù) process(); //主要流程 return 0; } //游戲開始初始化部分 void scmbxyhs() //輸出地圖提示信息函數(shù) { gotoxy(34, 17); printf("本關(guān)剩余目標(biāo)數(shù):"); gotoxy(34, 19); printf("本關(guān)已走步數(shù):"); gotoxy(32, 21); printf("您使用 秒完成了本關(guān)!"); gotoxy(49, 19); printf("0"); //輸出初始的步數(shù)0 } void wjzdwjzjjrqk() //未找到文件直接進(jìn)入第一關(guān)情況 { system("cls"); printf("地圖文件不存在,\n直接進(jìn)入第一關(guān)"); INITMAP //初始地圖數(shù)組 for (int i = 0; i < WH; i ) //如果地圖文件不存在則將初始地圖數(shù)組的值賦給需要使用的地圖 for (int j = 0; j < WH; j ) //將初始地圖數(shù)組的值復(fù)制給當(dāng)前地圖數(shù)組 mapch[i][j] = mapch_init[i][j]; Sleep(2000); //等待兩秒進(jìn)入第一關(guān) system("cls"); //清屏 tranmap(); //畫出初始地圖 detection(); //目標(biāo)信息 scmbxyhs(); //輸出地圖下方文字信息 } int n = 1; //輸入關(guān)卡變量** int maxn = 0; //最大關(guān)數(shù) int dczdgshs() //最大關(guān)數(shù) { FILE* fp = NULL; //因為用于提示和限制輸入情況,所以需要得到最大關(guān)卡數(shù)maxn fopen_s(&fp, FLPA, "r"); if (fp == NULL) { wjzdwjzjjrqk(); //未找到文件直接進(jìn)入第一關(guān)情況 return 0; } int temp = 0; //臨時變量用來統(tǒng)計地圖文件全字節(jié)數(shù) rewind(fp); //文件指針移動到文件首部 while (!feof(fp)) //文件指針還沒有到文件尾進(jìn)入循環(huán) { fgetc(fp); //讀字符函數(shù)從文件開頭讀,向后移動文件指針 temp ; //每讀一個字符則臨時變量自增,統(tǒng)計出全文件有幾個字符 } fclose(fp); //文件使用完成關(guān)閉文件 maxn = temp / BYT 1; //最大關(guān)數(shù)就是所有字符的數(shù)量除以一關(guān)的字符數(shù) return 1; } int gkxzhs() //選擇關(guān)卡函數(shù) { system("cls"); //輸出關(guān)卡選擇提示 gotoxy(26, 8); printf("請輸入想要挑戰(zhàn)的關(guān)卡:(回車確認(rèn))"); if (!dczdgshs()) //得出最大關(guān)數(shù)函數(shù),返回值為0代表未找到地圖文件,直接進(jìn)入流程 return 0; gotoxy(36, 10); printf("請輸入1- %d ", maxn);//輸出提示最大關(guān)數(shù)信息 srgk: //重新選擇關(guān)卡 gotoxy(41, 12); scanf_s("%d", &n); if (n<1 || n>maxn) //對輸入的錯誤關(guān)卡信息加以限制 { gotoxy(36, 12); printf(" "); gotoxy(33, 11); printf("請輸入正確的關(guān)數(shù)"); goto srgk; //如果輸入錯誤的關(guān)卡輸出提示信息并返回到輸入的地方重新輸入 } return 1; //如果找到了文件就返回1 } void cwjzjrwkdhs() //從文件中進(jìn)入關(guān)卡,適用于可以找到地圖文件的情況 { //關(guān)數(shù)變量n的默認(rèn)初始化值為1 FILE* fp = NULL; fopen_s(&fp, FLPA, "rb"); if (fp == NULL) { wjzdwjzjjrqk(); //直接進(jìn)入第一關(guān)函數(shù) return; //地圖文件不存在則直接進(jìn)入第一關(guān) } //讀文件進(jìn)入關(guān)卡的代碼,從第一關(guān)進(jìn)入和選擇特定關(guān)從n關(guān)進(jìn)入兩種情況都會執(zhí)行 //流程如果用到該函數(shù),檢測已達(dá)成的目標(biāo)和未達(dá)成目標(biāo)的個數(shù)一直則調(diào)用函數(shù),n關(guān)數(shù)自增1 int skip = (n - 1) * BYT; //到n關(guān)需要跳過的字?jǐn)?shù) 跳過一關(guān)需要的字?jǐn)?shù)為512 fseek(fp, skip, 0); //定位到地圖文件第skip個字節(jié)處開始讀取 int i, j; for (i = 0; i < WH; i ) //讀取512個字符 { for (j = 0; j < WH; j ) { fscanf_s(fp, "%d ", &mapch[i][j]);//格式讀函數(shù),直接以整數(shù)格式讀取數(shù)值存入地圖數(shù)組mapch中 printf("%d ", mapch[i][j]); } printf("\n"); } fclose(fp); //讀取文件完畢,將文件關(guān)閉 system("cls"); } void gnxzjm() //主菜單頁面選擇 { system("cls"); gotoxy(39, 8); printf("推箱子"); gotoxy(34, 10); printf("輸入1 開始新游戲"); gotoxy(34, 12); printf("輸入2 選擇關(guān)卡"); gotoxy(34, 14); printf("輸入3 退出游戲"); Head: //用于返回的標(biāo)簽 gotoxy(34, 17); char chn=_getch(); //選擇游戲模式 if (chn == '3') { system("cls"); //退出游戲則輸出提示信息 gotoxy(34, 12); printf("歡迎下次光臨"); Sleep(2000); gotoxy(0, 24); exit(0); //退出游戲 } else if (chn == '2') { if (!gkxzhs()) //進(jìn)入關(guān)卡選擇 return; //如果關(guān)卡選擇函數(shù)返回值為0則代表未找到文件,直接跳出初始化函數(shù) //如果返回1找到文件則繼續(xù)執(zhí)行該函數(shù)下面的內(nèi)容 } else if (chn == '1') n = 1; //如果選擇新游戲,直接從第一關(guān)開始 else { gotoxy(34, 16); printf("請輸入正確的選擇:"); goto Head; //選擇錯誤的菜單,則重新返回選擇菜單的地方 } //選擇1的情況: cwjzjrwkdhs(); //從文件讀取關(guān)卡的函數(shù) detection(); //統(tǒng)計當(dāng)前關(guān)卡的目標(biāo)數(shù) tranmap(); //畫出地圖 scmbxyhs(); //輸出地圖下方文字信息 } int detunf;//檢測未完成目標(biāo)的變量,初始為一個關(guān)卡中未完成目標(biāo)的個數(shù),箱子碰到未完成目標(biāo)時,自減 void detection() //檢測當(dāng)前關(guān)中有多少個目標(biāo) { //detunf detunf = 0; //從0開始統(tǒng)計 int i, j; for (i = 0; i < WH; i ) for (j = 0; j < WH; j ) if (mapch[i][j] == 2) detunf ; gotoxy(50,17); //在提示信息的位置輸出剩余目標(biāo)信息 printf("%d", detunf); } void cshhs() //總初始化函數(shù) { system("title 推箱子");//控制臺標(biāo)題 system("mode con cols=84 lines=26");//設(shè)置控制臺大小,第一個參數(shù)為橫軸,地圖參數(shù)32 16 gnxzjm(); //主菜單頁面選擇 HideCursor(); //隱藏光標(biāo)函數(shù) dczdgshs(); //找到地圖文件的情況下得出最大關(guān)數(shù) } //游戲流程部分 void tranmap() //翻譯地圖 { gotoxy(26, 1); //輸出地圖時在控制臺中間輸出,地圖最上方空一行 int i, j; for (i = 0; i < WH; i ) { for (j = 0; j < WH; j ) { if (mapch[i][j] == 1) printf("■"); else if (mapch[i][j] == 2) printf("★"); else if (mapch[i][j] == 3 || mapch[i][j] == 8) printf("●"); else if (mapch[i][j] == 4 || mapch[i][j] == 6 || mapch[i][j] == 7) printf("♀"); else if (mapch[i][j] == 5) printf("--"); else printf(" "); } gotoxy(26, i 1); //根據(jù)數(shù)組的y軸更改地圖輸出的y軸,地圖最上方空一行 } } int opnum; //每一關(guān)行走的步數(shù) int time; int time_2; void gktgszxhs() //判斷當(dāng)前關(guān)卡是否通過,是進(jìn)入下一關(guān) { if (detunf == 0) //當(dāng)前關(guān)卡目標(biāo)為0時 { n ; //關(guān)卡變量自增 if (n > maxn) //如果關(guān)數(shù)n大于了最大關(guān)卡數(shù)則返回主菜單 { tranmap(); //畫出地圖 gotoxy(26, 22); printf("您已通關(guān)所有關(guān)卡,3秒后返回主菜單!"); Sleep(3000); //等待三秒 opnum = 0, time = updatetime(),time_2 = 0;//行走的步數(shù),本關(guān)時間清0,重新獲取當(dāng)前時間,\ 因為需要輸出的time_2是用當(dāng)前時間-剛開始的時間 gnxzjm(); //主菜單頁面選擇函數(shù) } else { tranmap(); //畫出地圖 Sleep(2000); //等候兩秒 cwjzjrwkdhs(); //當(dāng)前關(guān)卡目標(biāo)為0時,從文件中向地圖數(shù)組中讀入下一關(guān)卡的信息 detection(); //統(tǒng)計當(dāng)前關(guān)卡目標(biāo)個數(shù) scmbxyhs(); //輸出地圖下方的信息 opnum = 0, time = updatetime(),time_2 = 0;//注釋見297行 //按鍵結(jié)束之后操控函數(shù)會調(diào)用畫出地圖函數(shù) } } } int i, j; //找到后的人的坐標(biāo) int box_x, box_y; //箱子的坐標(biāo) int boxnext_x, boxnext_y; //箱子前面的坐標(biāo) int peonext_x, peonext_y; //人前面的坐標(biāo) void gbszszhs(char ch) //修改地圖數(shù)組值主要函數(shù)** { for (i = 0; i < WH; i ) //遍歷 i是y軸,j是x軸 { for (j = 0; j < WH; j ) { if (mapch[i][j] == 4 || mapch[i][j] == 6 || mapch[i][j] == 7) //找到人的位置 { if (ch == 'w') // 用于確定不同方向上 箱子、箱子前面、人前面的坐標(biāo) { box_y = i - 1; box_x = j; //箱子當(dāng)前 boxnext_y = i - 2; boxnext_x = j; //箱子前面 peonext_y = i - 1; peonext_x = j; //人前面 } else if (ch == 'a') { box_y = i; box_x = j - 1; boxnext_y = i; boxnext_x = j - 2; peonext_y = i; peonext_x = j - 1; } else if (ch == 's') { box_y = i 1; box_x = j; boxnext_y = i 2; boxnext_x = j; peonext_y = i 1; peonext_x = j; } else if (ch == 'd') { box_y = i; box_x = j 1; boxnext_y = i; boxnext_x = j 2; peonext_y = i; peonext_x = j 1; } //排除大的錯誤 if (mapch[box_y][box_x] == 3 || mapch[box_y][box_x] == 8) //如果人的前邊是箱子 if (mapch[boxnext_y][boxnext_x] == 1 || mapch[boxnext_y][boxnext_x] == 3 || mapch[boxnext_y][boxnext_x] == 8) return; //如果箱子前邊是墻或者是箱子直接結(jié)束修改函數(shù) if (mapch[box_y][box_x] == 1) //人的前邊不能是墻 return; //如果人的前邊是墻直接結(jié)束修改 opnum ; //每次有效操作步數(shù)自增一次,并輸出 gotoxy(49, 19); printf("%d", opnum);//步數(shù) //箱子改變 if (mapch[box_y][box_x] == 3 || mapch[box_y][box_x] == 8) //如果人的前邊是箱子 { //箱子原地改變: if (mapch[box_y][box_x] == 3) //如果箱子所在的位置是 一般箱子 mapch[box_y][box_x] = 0; //改變?yōu)榭盏? else if (mapch[box_y][box_x] == 8) //如果箱子所在的位置是 箱子暫時所在已達(dá)成的目標(biāo) mapch[box_y][box_x] = 5; //改變?yōu)橐堰_(dá)成的目標(biāo) //箱子的下一步改變: if (mapch[boxnext_y][boxnext_x] == 2) //如果箱子前面的格子是未放箱子的目標(biāo) { mapch[boxnext_y][boxnext_x] = 5; //則該格子變?yōu)橐逊畔渥拥哪繕?biāo) detunf--; //本關(guān)目標(biāo)減1 gotoxy(50, 17); //輸出本關(guān)剩余目標(biāo)個數(shù) printf("%d", detunf); } else if (mapch[boxnext_y][boxnext_x] == 0) //如果箱子前面是空地 mapch[boxnext_y][boxnext_x] = 3; //則變?yōu)槠胀ㄏ渥? else if (mapch[boxnext_y][boxnext_x] == 5) //如果箱子前面是已經(jīng)放過箱子的目標(biāo) mapch[boxnext_y][boxnext_x] = 8; //則變?yōu)?箱子暫時所在已達(dá)成的目標(biāo) } //原地改變 if (mapch[i][j] == 6) mapch[i][j] = 2; //走出去之后原地又變回2 未達(dá)成的目標(biāo) else if (mapch[i][j] == 7) mapch[i][j] = 5; //走出去之后原地又變回5 已達(dá)成的目標(biāo) else if (mapch[i][j] == 4) mapch[i][j] = 0; //走出去之后原地變回4 人的原型 //人下一步改變 if (mapch[peonext_y][peonext_x] == 0 || mapch[peonext_y][peonext_y] == 3)//如果他的下一步是普通箱子或者空地 mapch[peonext_y][peonext_x] = 4; //人是 普通的人 if (mapch[peonext_y][peonext_x] == 2) //如果他的下一步還是未達(dá)成的目標(biāo) mapch[peonext_y][peonext_x] = 6; //人是 人暫時所在未達(dá)成的目標(biāo) if (mapch[peonext_y][peonext_x] == 5) //如果人的下一步是已經(jīng)達(dá)成的目標(biāo) mapch[peonext_y][peonext_x] = 7; //人是 人暫時所在已經(jīng)達(dá)成的目標(biāo) if (mapch[peonext_y][peonext_x] == 8) //如果人的下一步是 箱子暫時所在已達(dá)成的目標(biāo) mapch[peonext_y][peonext_x] = 7; //人還是 暫時所在已達(dá)成的目標(biāo) goto L1; //修改完成后不需要遍歷后面的數(shù)組,直接跳出所有循環(huán) } } } L1: //用于跳出的標(biāo)簽 gktgszxhs(); //關(guān)卡通過則進(jìn)入下一關(guān) } void operation() //操作人物函數(shù) { char ch = _getch(); //接收輸入的方向 _getch()即使接收 switch (ch) { case 'w': //向不同方向移動 gbszszhs(ch); //傳遞參數(shù),修改二維數(shù)組 break; case 'a': gbszszhs(ch); break; case 's': gbszszhs(ch); break; case 'd': gbszszhs(ch); break; } tranmap(); //重新畫出地圖 } int updatetime() //獲取一次電腦現(xiàn)在的時間 { int now; SYSTEMTIME system_time; GetLocalTime(&system_time); now = system_time.wMinute * 60 system_time.wSecond; return now; } void process() //主要流程 { time = updatetime(); //初始時間 while (1) { time_2 = updatetime() - time; //每關(guān)的時間time_2,值為當(dāng)前時間減去當(dāng)前關(guān)卡開始的時間 gotoxy(39, 21); printf("%d s", time_2); //輸出 if(_kbhit()) operation(); //操作人物、修改數(shù)值主要函數(shù) Sleep(20); //游戲幀率和手感 休眠時間 } } void gotoxy(int x, int y) //光標(biāo)定位 { COORD pos = { x,y }; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); } void HideCursor() //光標(biāo)隱藏 { CONSOLE_CURSOR_INFO cursor_info = { 1, 0 }; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); }
主要函數(shù):gbszszhs()里面的邏輯是比較復(fù)雜的,我當(dāng)時寫這段代碼的時候也是反反復(fù)復(fù)修改好多次甚至推翻重做才理通順這些邏輯的。
如果對于程序代碼注釋有我沒寫明白的地方,歡迎在評論區(qū)下方留言詢問,如果我看到會盡最大的努力為您解惑。
不足之處:
地圖在屏幕上顯示時容易出錯,需要調(diào)整每關(guān)字?jǐn)?shù)。原因并不明確。
因為作者對C語言的學(xué)習(xí)還比較淺薄,代碼寫到初始化游戲的兩種模式(有文件和無文件)時思維有些混亂,導(dǎo)致代碼在這一部分有很多的缺陷,但最終程序的效果還是出來了。
但其實對整篇所有代碼而言最重要的部分還是gbszszhs()函數(shù),只要將這個函數(shù)完全理解并熟練掌握了,那么整個“推箱子”游戲也就非常簡單了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。