~cpp def search(): for i in range(height): for j in range(width): if M[i][j]=='*': if M[i-1][j-1]!= '*' and i-1>=0 and j-1>=0 and i-1<width and j-1<height: M[i-1][j-1]=M[i-1][j-1]+1 if M[i-1][j]!= '*' and i-1>=0 and j>=0 and i-1<width and j<height: M[i-1][j]=M[i-1][j]+1 if M[i-1][j+1]!= '*' and i-1>=0 and j+1>=0 and i-1<width and j+1<height: M[i-1][j+1]=M[i][j+1]+1 if M[i][j-1]!= '*' and i>=0 and j-1>=0 and i<width and j-1<height: M[i][j-1]=M[i][j-1]+1 if M[i][j+1]!= '*' and i>=0 and j+1>=0 and i<width and j+1<height: M[i][j+1]=M[i][j+1]+1 if M[i+1][j-1]!= '*' and i+1>=0 and j-1>=0 and i+1<width and j-1<height: M[i+1][j-1]=M[i+1][j-1]+1 if M[i+1][j]!= '*' and i+1>=0 and j>=0 and i+1<width and j<height: M[i+1][j]=M[i+1][j]+1 if M[i+1][j+1]!= '*' and i+1>=0 and j+1>=0 and i+1<width and j+1<height: M[i+1][j+1]=M[i+1][j+1]+1 width = 4 height = 4 M=[['*','.','.','.'],['.','.','.','.'],['.','*','.','.'],['.','.','.','.']] for i in range(height): for j in range(width): if M[i][j]!='*': M[i][j]=int(0) search() for i in range(height): print M[i]
~cpp function set_val() { /////////////////////////지뢰의 갯수와 맵의 크기를 결정하는 변수 설정부 size = 15; // 맵 사이즈 설정 quantityMine=100;// 지뢰의 갯수 설정 ///////////////////////////////////////////////////////////////////////// i = j = 0; set_all_num = 0; //size*size 사이즈의 2중 배열의 모든 원소를 set_all_num값으로 초기화 map = new Array(); for (i=0; i<size; i++) { map[i] = new Array(); for (j=0; j<size; j++) { map[i][j] = set_all_num; } } trace("end set all value"); } // 지뢰의 위치를 세팅 function setMine(){ mine_count = 0; while(mine_count<quantityMine){ for (i=0; i<size; i++) { for (j=0; j<size; j++) { if( map[i][j]!= -1 && mine_count < quantityMine && !( random(100) % 5 ) ){ map[i][j]='*'; trace("지뢰 배치 " + i + " " + j + " 지금 까지 배치된 지뢰의 갯수 : " + ++mine_count); }else{ } } } } } // 지뢰위치만을 표시한다. function showMineMap(){ trace(" "); trace(" "); trace(" "); for(i=0; i<size; i++){ temp = new Array(); temp = map[i]; showMap=temp.join(" "); trace(showMap); } trace(" "); trace(" "); trace(" "); } // 주변의 지뢰 갯수를 세고 표시한다. function checkMineMap(){ minecount = 0; for(i=0; i<size; i++){ for(j=0; j<size; j++){ if(map[i][j]!='*'){ if(map[i-1][j-1]=='*')minecount++; if(map[i-1][j]=='*')minecount++; if(map[i-1][j+1]=='*')minecount++; if(map[i][j-1]=='*')minecount++; if(map[i][j+1]=='*')minecount++; if(map[i+1][j-1]=='*')minecount++; if(map[i+1][j]=='*')minecount++; if(map[i+1][j+1]=='*')minecount++; map[i][j]=minecount; } minecount=0; } } }
~cpp onClipEvent(load){ // 변수를 모두 초기화 _root.set_val(); // 0으로 셋팅된 배열의 모든 원소를 아웃펏에 보여주는 함수 _root.showMineMap(); // 지뢰의 위치를 세팅 _root.setMine(); // 지뢰 세팅이 완료된 맵을 보여줌 _root.showMineMap(); // 주변의 지뢰 갯수를 세고 표시한다. _root.checkMineMap(); // 지뢰 세팅이 완료된 맵을 보여줌 _root.showMineMap(); }