炸飛機

炸飛機

炸飛機是一種推理遊戲,主要通過炸取區格得到的信息“空,傷,沉”來判斷對方飛機的擺放位置,最先將對方飛機擊沉的人獲勝。

基本介紹

  • 中文名:炸飛機
  • 種類:推理遊戲
  • 所需工具:10x10的表格、飛機
  • :代表 空
  • :代表 傷
  • : 代表 沉
遊戲準備,遊戲過程,Matlab原始碼,

遊戲準備

每個人準備兩個10x10的表格,一個用來擺放自己的飛機,另一個用來分析對方飛機的擺放位置。將表格的行和列分別標柱上1-10和A-J,雙方在開始之前首先確定誰先手(猜拳方式即可),遊戲開始後相互只需報出想要攻擊的對方坐標,如C6,F3等。
然後是擺放飛機。飛機機身長4區格;機翼5區格,其中心位於機身第二個區格;尾翼3區格其中心位於機身尾端。將3架這樣的飛機畫在自己的一個表格里,飛機不能出格,飛機之間也不得重複,如圖1。
二人彼此的表格互相保密。

遊戲過程

畫好後,一個人開始炸:報告要炸取的區格的序號(如C4),對方將自己該區格的情況報告給炸方。若那個區格沒有飛機,報“空”,若有飛機但不是機頭,報“傷”或“中”,若是機頭,報“沉”或“死”(反正就是掛掉的意思),報完後輪到自己炸對方= =
在炸的過程中,用自己另一個表格來標記自己已經炸過的區格,根據它分析對方飛機的擺放。遊戲最終目的就是炸毀對方所有(三個)飛機的機頭。
此遊戲很考驗分析能力。
可以用符號來代替:
- 代表 空
X 代表 傷
O 代表 沉

Matlab原始碼

(喵里葉變換版)
functionplane%PLANEplaysthebombingplanegame.%Ata10x10airportlyingthreeplanes.Trytousetheleastbombs%toblowupallthethreeplanes.%%Theplane'sshapeisdeterminedbythematrixasfellow:%00600%55555%00500%05550%wherenumber6responsestheheadpartofeachplaneand%number5responsesthebody.Onlywhentheheadpartof%theplaneisblowedup,theplanewouldbecompletelydes-%toried.Youwinthegamewhenallthreeplanesareblowed%up.%%Duringthegame,youshallsayaposition(suchas'D4')that%youwishtoblowupandtheMatlabwilltellyoutheresultas%follow:%Miss:Yourbombmissedtheplane..%Hurt:Yourbombexplodedatthebodyofaplane.%Kill:Yourbombexplodedattheheadofaplane.%Domakefulluseoftheseimformationtodeterminethe%locationsoftheplane'sheads.%%Duringthegame,typing'current'tocheckcurrentimformation%youhaveexploredintheboard.Typing'giveup'whenyouare%wishtogiveupandcheckthecorrectanswerandtyping'exit'%toexitthegame.%%Coder:MourierTransform%Cirno'scompleteCodingWorkshop%2013-9-25(Meow>w<~)globalplaneplaneupplaneleftplanedownplanerightplaneboard;plane=[0,0,6,0,05,5,5,5,50,0,5,0,00,5,5,5,0];planeup=plane;planeleft=rot90(plane);planedown=rot90(rot90(plane));planeright=rot90(rot90(rot90(plane)));planeboard=zeros(10);explored=zeros(10);step=0;i=1;while1putplane;putplane;putplane;ifislegal(planeboard)break;elsei=i+1;planeboard=zeros(10);endenddisp('');disp('Thebombingplanegame.');disp('');disp('Typethepositionyouwishtobomb.');disp('Type"current"tochecktheexploredposition.');disp('Type"giveup"togiveup,checktherightanswerandexitthegame.');disp('Type"exit"toexitthegamedirectly.');disp('');while1ifisWin(explored)disp('Congratulations!Youwonthegame.');disp(['Bombsused:',num2str(step),'.']);disp('Yourevaluationis:');ev='AirmanBasic.';ifstep<60ev='Airman.';endifstep<56ev='AirmanFirstClass.';endifstep<52ev='SeniorAirman.';endifstep<49ev='StaffSergeant.';endifstep<46ev='TechnicalSergeant.';endifstep<43ev='FirstSergeant.';endifstep<40ev='MasterSergeant.';endifstep<37ev='SeniorMasterSergeant.';endifstep<34ev='ChiefMasterSergeant.';endifstep<31ev='CommandChiefMasterSergeant.';endifstep<28ev='ChiefMasterSergeantoftheAirForce.';endifstep<26ev='SecondLieutenant.';endifstep<24ev='FirstLieutenant.';endifstep<22ev='Captain.';endifstep<20ev='Major.';endifstep<18ev='LieutenantColonel.';endifstep<16ev='Colonel.';endifstep<14ev='BrigadierGeneral.';endifstep<12ev='MajorGeneral.';endifstep<10ev='LieutenantGeneral.';endifstep<9ev='General.';endifstep<8ev='GeneraloftheAirForce.';endifstep<7ev='Luckyman.';endifstep<4ev='ChineseHacker.'enddisp(ev);return;endin=input('Meow:','s');switchincase'current'disp('Bombsused:');disp(step);disp('Positionexploredasfellow:');disp(explored);disp('0-Hasnotbeenexplored');disp('1-Missed');disp('2-Hurt');disp('3-Killed');case'giveup'disp('Yougaveup.....nowchecktheanswer:');disp(planeboard);return;case'exit'disp('Exitthegame.');return;otherwise[x,y]=trans(in);ifx~=0&&y~=0switchplaneboard(x,y)case0disp('Missed.');explored(x,y)=1;step=step+1;case5disp('Hurttheplane.');explored(x,y)=2;step=step+1;case6disp('Killedtheplane,excellent!');explored(x,y)=3;step=step+1;otherwiseendelsedisp('Illegalcommand...');endendendfunction[x,y]=trans(s)%Positiontransform.x=0;y=0;ifdouble(s(1))>=65&&double(s(1))<=74x=double(s(1))-64;endifdouble(s(1))>=97&&double(s(1))<=106x=double(s(1))-96;endifdouble(s(2))>=49&&double(s(2))<=57y=double(s(2)-48);tryifs(2)=='1'&&s(3)=='0'y=10;endcatchendendfunctionputplaneglobalplaneupplaneleftplanedownplanerightplaneboard;%Putaplane.switchceil(rand*4)case1x=floor(rand*7);y=floor(rand*6);fori=1:4forj=1:5planeboard(x+i,y+j)=planeboard(x+i,y+j)+planeup(i,j);endendcase2x=floor(rand*7);y=floor(rand*6);fori=1:4forj=1:5planeboard(x+i,y+j)=planeboard(x+i,y+j)+planedown(i,j);endendcase3x=floor(rand*6);y=floor(rand*7);fori=1:5forj=1:4planeboard(x+i,y+j)=planeboard(x+i,y+j)+planeleft(i,j);endendcase4x=floor(rand*6);y=floor(rand*7);fori=1:5forj=1:4planeboard(x+i,y+j)=planeboard(x+i,y+j)+planeright(i,j);endendendfunctionx=islegal(board)%Checklegal.siz=size(board);x=1;form=1:siz(1)forn=1:siz(2)ifboard(m,n)>6x=0;break;endendendfunctionx=isWin(board)%Checkwinning.siz=size(board);x=0;tick=0;form=1:siz(1)forn=1:siz(2)ifboard(m,n)==3tick=tick+1;iftick==3x=1;break;endendendend

相關詞條

熱門詞條

聯絡我們