More actions
imported>Unknown No edit summary |
(Repair batch-0002 pages from live compare) |
||
| Line 1: | Line 1: | ||
= Mine Sweeper/이승한 = | = Mine Sweeper/이승한 = | ||
== Python == | == Python == | ||
[[데블스캠프2005/화요일]] [[데블스캠프2005/Python|데블스캠프2005/python]]의 | [[데블스캠프2005/화요일]] [[데블스캠프2005/Python|데블스캠프2005/python]]의 ToyProblem | ||
입력 처리가 귀찮아서 안 만들었다. | 입력 처리가 귀찮아서 안 만들었다. | ||
변수값을 바꾸자. | 변수값을 바꾸자. | ||
| Line 7: | Line 7: | ||
for i in range(height): | for i in range(height): | ||
for j in range(width): | for j in range(width): | ||
if M | if M[i][j]=='*': | ||
if M | if M[i-1][j-1]!= '*' and i-1>=0 and j-1>=0 and i-1<width and j-1<height: | ||
M | M[i-1][j-1]=M[i-1][j-1]+1 | ||
if M | if M[i-1][j]!= '*' and i-1>=0 and j>=0 and i-1<width and j<height: | ||
M | M[i-1][j]=M[i-1][j]+1 | ||
if M | if M[i-1][j+1]!= '*' and i-1>=0 and j+1>=0 and i-1<width and j+1<height: | ||
M | M[i-1][j+1]=M[i][j+1]+1 | ||
if M | if M[i][j-1]!= '*' and i>=0 and j-1>=0 and i<width and j-1<height: | ||
M | M[i][j-1]=M[i][j-1]+1 | ||
if M | if M[i][j+1]!= '*' and i>=0 and j+1>=0 and i<width and j+1<height: | ||
M | M[i][j+1]=M[i][j+1]+1 | ||
if M | if M[i+1][j-1]!= '*' and i+1>=0 and j-1>=0 and i+1<width and j-1<height: | ||
M | M[i+1][j-1]=M[i+1][j-1]+1 | ||
if M | if M[i+1][j]!= '*' and i+1>=0 and j>=0 and i+1<width and j<height: | ||
M | M[i+1][j]=M[i+1][j]+1 | ||
if M | if M[i+1][j+1]!= '*' and i+1>=0 and j+1>=0 and i+1<width and j+1<height: | ||
M | M[i+1][j+1]=M[i+1][j+1]+1 | ||
width = 4 | width = 4 | ||
height = 4 | height = 4 | ||
M= | M=[['*','.','.','.'],['.','.','.','.'],['.','*','.','.'],['.','.','.','.']] | ||
for i in range(height): | for i in range(height): | ||
for j in range(width): | for j in range(width): | ||
if M | if M[i][j]!='*': | ||
M | M[i][j]=int(0) | ||
search() | search() | ||
for i in range(height): | for i in range(height): | ||
print M | print M[i] | ||
== FLASH == | == FLASH == | ||
1학기였나?? 피씨실에서 지뢰찾기하다가 생각나서 짜본 소스. | 1학기였나?? 피씨실에서 지뢰찾기하다가 생각나서 짜본 소스. | ||
| Line 64: | Line 64: | ||
map = new Array(); | map = new Array(); | ||
for (i=0; i<size; i++) { | for (i=0; i<size; i++) { | ||
map | map[i] = new Array(); | ||
for (j=0; j<size; j++) { | for (j=0; j<size; j++) { | ||
map | map[i][j] = set_all_num; | ||
} | } | ||
} | } | ||
| Line 78: | Line 78: | ||
for (i=0; i<size; i++) { | for (i=0; i<size; i++) { | ||
for (j=0; j<size; j++) { | for (j=0; j<size; j++) { | ||
if( map | if( map[i][j]!= -1 && mine_count < quantityMine && !( random(100) % 5 ) ){ | ||
map | map[i][j]='*'; | ||
trace("지뢰 배치 " + i + " " + j + " 지금 까지 배치된 지뢰의 갯수 : " + ++mine_count); | trace("지뢰 배치 " + i + " " + j + " 지금 까지 배치된 지뢰의 갯수 : " + ++mine_count); | ||
}else{ | }else{ | ||
| Line 98: | Line 98: | ||
for(i=0; i<size; i++){ | for(i=0; i<size; i++){ | ||
temp = new Array(); | temp = new Array(); | ||
temp = map | temp = map[i]; | ||
showMap=temp.join(" "); | showMap=temp.join(" "); | ||
trace(showMap); | trace(showMap); | ||
| Line 114: | Line 114: | ||
for(i=0; i<size; i++){ | for(i=0; i<size; i++){ | ||
for(j=0; j<size; j++){ | for(j=0; j<size; j++){ | ||
if(map | if(map[i][j]!='*'){ | ||
if(map | if(map[i-1][j-1]=='*')minecount++; | ||
if(map | if(map[i-1][j]=='*')minecount++; | ||
if(map | if(map[i-1][j+1]=='*')minecount++; | ||
if(map | if(map[i][j-1]=='*')minecount++; | ||
if(map | if(map[i][j+1]=='*')minecount++; | ||
if(map | if(map[i+1][j-1]=='*')minecount++; | ||
if(map | if(map[i+1][j]=='*')minecount++; | ||
if(map | if(map[i+1][j+1]=='*')minecount++; | ||
map | map[i][j]=minecount; | ||
} | } | ||
minecount=0; | minecount=0; | ||
| Line 152: | Line 152: | ||
---- | ---- | ||
MineSweeper | MineSweeper | ||
Latest revision as of 00:16, 27 March 2026
Mine Sweeper/이승한
Python
데블스캠프2005/화요일 데블스캠프2005/python의 ToyProblem 입력 처리가 귀찮아서 안 만들었다. 변수값을 바꾸자.
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]
FLASH
1학기였나?? 피씨실에서 지뢰찾기하다가 생각나서 짜본 소스. 이땐 객체가 무언지 잘 몰라서 함수와 전역 변수들만 가지고 만들어 본...-_-ㅋ;; C랑 다른건 Array 객체를 사용한 정도??;; 목표는 그래픽 출력까지 할려고 했는데;; 귀찮아서리~;;
인풋 아웃풋 조건이 틀립니다. 굳이 상관없을것 같아서 올려봅니다.
layer (전역)
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;
}
}
}
blank symbol : 플레시가 실행되면 변수를 초기화하고 함수를 부르는.
onClipEvent(load){
// 변수를 모두 초기화
_root.set_val();
// 0으로 셋팅된 배열의 모든 원소를 아웃펏에 보여주는 함수
_root.showMineMap();
// 지뢰의 위치를 세팅
_root.setMine();
// 지뢰 세팅이 완료된 맵을 보여줌
_root.showMineMap();
// 주변의 지뢰 갯수를 세고 표시한다.
_root.checkMineMap();
// 지뢰 세팅이 완료된 맵을 보여줌
_root.showMineMap();
}
MineSweeper