개요

갑자기 크롬 확장프로그램 개발을 하고 싶어서 개발 일지 비스무리하게 일지 작성을 시작하였다.

이게 또 목표가 있어야 개발에 집중을 더 할 테니 목표를 정해보자...

1차 목표는 음... 좋다.. 조금 크게 잡는거다!!

" 확장프로그램 클릭 했을때, 티스토리 또는 네이버에서 글쓰기의 글자 수를 세보자 " 로 목표를 정해보자!!

할 수 있는 것 보다는 개발 일지를 얼마나 내가.. 안빼먹고 쓸 수있을지 내 자신을 믿을 수 가 없다...

 

1일차

시작 : 2022년 01월 08일 오후 9시경

목표 : 크롬 화면 내에서 확장프로그램 위치 자유롭게 바꾸기

 

사이트 목록 : 

https://developer.chrome.com/docs/extensions/mv3/getstarted/ ( API 관련 자료)

chrome://extensions/ ( chrome extension 주소 )

 

 

Eclipse로 개발환경을 꾸며보자..

간단하게 Project 만들어서 시작

일단 시키는대로 대충.. manifest.json, icon.png, text.js, content.js 파일 4개 생성

아직 뭐가 뭔지도 모른다..

API 문서를 더 파보자...

아니다.. 이러면 답이 없다..

오픈소스를 이용해서 일단 만들어 놓고 분석하자...

기존 4개 파일에 소스코드를 부먹하면서 공부 하자..

 

일단 부먹해서...

노란색 박스로 화면 하단 쪽에 띄우는데 성공하였다!!!

확장프로그램 텍스트 띄우기 ( 오른쪽 하단 )
확장프로그램 텍스트 띄우기 ( 하단 )

 

다음 목표는 어떻게 띄워 졌는가?? 그것이 문제이다.

소스코드 분석은 다음에 해보자..

 

다음의 나에게 맡긴다. 넌 할 수 있다. 화이팅...

숫자 빙고 게임

 


 

public static void map(int n, int m, int pick[], int user[][]) {
	int w = 0;
	boolean ch = false;

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			while (true) {
				int tmp = (int) (Math.random() * m) + 1;
				for (int k = 0; k < pick.length; k++) {
					if (tmp == pick[k])
						ch = true;
				}
				if (ch) {
					ch = false;
					continue;
				} else {
					pick[w++] = user[i][j] = tmp;
					break;
				}
			}
		}
	}
}

public static void line(int n, int user[][]) {
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			System.out.print(user[i][j] + "\t");
		}
		System.out.println();
	}
	System.out.println();

}

public static void ucheck(int user[][], int com[][], int uch) {
	for (int i = 0; i < user.length; i++) {
		for (int j = 0; j < user.length; j++) {
			if (user[i][j] == uch) {
				user[i][j] = 0;
			}
			if (com[i][j] == uch) {
				com[i][j] = 0;
			}
		}
	}
}

public static void ccheck(int m, int com[][], int user[][]) {
	int tmp = 0;
	int cnt = 0, c=0;
	int sa=0;
	

	while (cnt<1) {
		tmp = (int) (Math.random() * m + 1);
		for (int i = 0; i < com.length; i++) {
			for (int j = 0; j < com.length; j++) {
				if (com[i][j] == tmp) {
					com[i][j] = 0;
					sa=tmp;
				}
			}
		}
		
		for (int i = 0; i < user.length; i++) {
			for (int j = 0; j < user.length; j++) {
				if (user[i][j] == sa) {
					user[i][j] = 0;
				}
			}
		}
		cnt+=1;
	}
	System.out.println("컴퓨터 차례 - 고른 숫자는 : "+tmp);
}

public static void bingo(int n,int b,int user[][], int com[][]) {
	int bingo=0, cbingo=0;
	int cnt=0, cntt=0, ccnt=0, ccntt=0;
	
	for(int i=0; i<n; i++) {
		cnt=0; cntt=0; ccnt=0; ccntt=0;
		for(int j=0; j<n; j++) {
			if(user[i][n-1-j]==0) {
				cnt+=1;
				if(cnt==n) {
					bingo+=1;
					cnt=0;
				}
			}
			if(user[n-1-j][i]==0) {
				cntt+=1;
				if(cntt==n) {
					bingo+=1;
					cntt=0;
				}
			}
			
			if(com[i][n-1-j]==0) {
				ccnt+=1;
				if(ccnt==n) {
					cbingo+=1;
					ccnt=0;
				}
			}
			if(com[n-1-j][i]==0) {
				ccntt+=1;
				if(ccntt==n) {
					cbingo+=1;
					ccntt=0;
				}
			}
		}	
	}
	
	if(bingo>=b) {
		System.out.println(bingo+"줄로 유저 승!!");
		System.exit(0);
	}
	else if(cbingo>=b) {
		System.out.println(cbingo+"줄로 컴퓨터 승!!");
		System.exit(0);
	}
	
	else if(bingo>=1 | cbingo>=1) {
		System.out.println("유저 : "+  bingo +" 줄 빙고\n" + "컴퓨터 : " + cbingo + " 줄 빙고");
	}
	
}

public static void main(String[] args) throws IOException {
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	int uch = 0;
	
	
	System.out.print("n * n 배열만큼 뽑을 n을 입력 : ");
	int n = Integer.parseInt(br.readLine());
	System.out.print("빙고값 : 1 ~ m 숫자 m을 입력(m = n*n이상) : ");
	int m = Integer.parseInt(br.readLine());
	System.out.print("빙고 몇줄시 승리 할지 입력(n*2까지 가능) : ");
	int b = Integer.parseInt(br.readLine());

	int user[][] = new int[n][n];
	int com[][] = new int[n][n];
	int upick[] = new int[n * n];
	int cpick[] = new int[n * n];

	map(n, m, upick, user);
	map(n, m, cpick, com);
	System.out.println("[사용자 빙고 판]");
	line(n, user);
	System.out.println("[컴퓨터 빙고 판]");
	line(n, com);

	for(;;) {
	System.out.print("유저차례 - 고를 숫자 입력 :");
	uch = Integer.parseInt(br.readLine());
	ucheck(user, com, uch);
	System.out.println("[사용자 빙고 판]");
	line(n, user);
	System.out.println("[컴퓨터 빙고 판]");
	line(n, com);

	ccheck(m, com, user);
	System.out.println("[사용자 빙고 판]");
	line(n, user);
	System.out.println("[컴퓨터 빙고 판]");
	line(n, com);
	
	bingo(n,b,user,com);
	}
}

 

출력하면 다음과 같습니다.

 

가위바위보 첫 번째

 


 

int ch=0;
int com=0;

while(true) {
	System.out.print("1.가위 2.바위 3.보 4.종료 > ");
	ch = System.in.read()-'0';
	System.in.skip(2);
	
	if(ch < 1 | ch > 4) {
		System.out.println("없는 번호입니다. 다시 고르세요.");
		continue;
	}
	else if(ch == 4) {
		System.out.println("종료합니다.");
		break;
	}
	else {
		com = (int) (Math.random() *3 + 1);
		System.out.println("유저는 " + ((ch == 1)? "가위" : (ch == 2)? "바위" : "보") + "를 내었습니다.");
		System.out.println("컴퓨터는 " + ((com == 1)? "가위" : (com == 2)? "바위" : "보") + "를 내었습니다.");
	}			
	System.out.println();
	
	switch(ch * com) {
		case 2 :
			System.out.println(((ch > com)? "유저" : "컴퓨터") + "가 이겼습니다.");
			break;
		case 3 :
			System.out.println(((ch > com)? "컴퓨터" : "유저") + "가 이겼습니다.");
			break;
		case 6:
			System.out.println(((ch > com)? "유저" : "컴퓨터") + "가 이겼습니다.");
			break;
		default :
			System.out.println("비겼습니다.");
	}
}

 

출력하면 다음과 같습니다.

 

가위바위보 이미지

 


 

가위바위보 두 번째

 


 

int sel = 0;
System.out.println("가위 바위 보");

for (;;) {

	do {
		System.out.println("1.가위 2.바위 3.보 4.종료");
		System.out.print("메뉴> ");

		sel = System.in.read() - 48;
		
		System.in.skip(2);
	} while (sel > 4 || sel < 1);

	if (sel == 4) {
		System.out.println("게임을 종료합니다.");
		break;
	}

	if(sel >= 1 && sel <=4) {
		int com = (int) (Math.random() * 3 + 1);

		System.out.println("사용자 : " + ((sel==1)? "가위" : (sel==2)? "바위" : "보"));
		System.out.println("컴퓨터 : " + ((com==1)? "가위" : (com==2)? "바위" : "보"));
		
		if (sel == 1) {
			if (com == 1) {
				System.out.println("무승부");
			} else if (com == 2) {
				System.out.println("컴퓨터 승");
			} else {
				System.out.println("사용자 승");
			}
		} else if (sel == 2) {
			if (com == 1) {
				System.out.println("사용자 승");
			} else if (com == 2) {
				System.out.println("무승부");
			} else {
				System.out.println("컴퓨터 승");
			}
		} else if (sel == 3) {
			if (com == 1) {
				System.out.println("컴퓨터 승");
			} else if (com == 2) {
				System.out.println("사용자 승");
			} else {
				System.out.println("무승부");
			}
		}
	}
}

 

출력하면 다음과 같습니다.

 

가위바위보 이미지2

 


 

가위바위보 세 번째

 


 

System.out.println("==가위 바위 보 게임==");
System.out.println("1.가위 2.바위 3.보 4.게임종료");

int user = 0;
int com = 0;

String ga = "가위";
String ba = "바위";
String bo = "보";

do {
	System.out.print("입력>");
	user = System.in.read() - 48;
	System.in.skip(2);
	com = (int) (Math.random() * 3 + 1);
	
	if(user==4) {
		System.out.println("게임을 종료합니다");
		System.exit(0);
	}

	if(user >= 1 && user <=4) {
		if (user == 1) {
			System.out.println("사용자: " + ga);
		} else if (user == 2) {
			System.out.println("사용자: " + ba);
		} else {
			System.out.println("사용자: " + bo);
		}

		if (com == 1) {
			System.out.println("컴퓨터: " + ga);
		} else if (com == 2) {
			System.out.println("컴퓨터: " + ba);
		} else {
			System.out.println("컴퓨터: " + bo);
		}
	

		switch (user - com) {
		case -2:
			System.out.println("사용자 승리!!" + "\n");
			break;
		case -1:
			System.out.println("컴퓨터 승리!!" + "\n");
			break;
		case 0:
			System.out.println("비겼습니다!!" + "\n");
			break;
		case 1:
			System.out.println("사용자 승리!!" + "\n");
			break;
		case 2:
			System.out.println("컴퓨터 승리!!" + "\n");
			break;
		default:
			System.out.println("다시 입력하세요!!" + "\n");
		}
	}

} while (user != 4);

 

출력하면 다음과 같습니다.

 

가위바위보 이미지3

사각형(Square) 모양


int num1;
int num2;
		
for(num1 = 0; num1 < 4; num1++) {
	for(num2 = 0; num2 < 5; num2++) {
		if(num2 == 0 | num2 == 4 | num1 == 0 | num1 == 3)
			System.out.print("*");
		else 
			System.out.print(" ");
	}
	System.out.print("\n");
}

 

출력하면 다음과 같은 사각형 모양이 출력 됩니다.

 

사각형 모양

하트(HEART) 모양의 ^ ^ 상단 출력


 JAVA로 하트 모양의 ^^ 상단 출력하는 방법을 우선 적어보도록 하겠습니다.

 

int i , j;
int top = 10;
int topWidth = (top / 2) -2;

for( i = topWidth ; i < top; i += 2 ) { 
	for( j = 0; j <= (top - i); j++ ) {
		System.out.print(" ");
	}
			
	for( j = 0; j <= i * 2; j++ ) {
		System.out.print("*");
	}
			
	for( j = 0; j <= (top - i) * 2; j++ ) {
		System.out.print(" ");
	}
			
	for( j = 0; j <= i * 2; j++ ) {
		System.out.print("*");
	}
	
	System.out.print("\n"); 
}

 

 

top은 *의 개수입니다. ( 개수가 많아지면 옆으로 커집니다. )

 

* topWidth 설명.

for( i = topWidth ; i < top; i += 2 )

[ i = 3; i < 10; i += 2 ]

3개부터 2개씩 먼저 더하면서 출력한다는 의미입니다.

하트 모양의 ^^ 상단

System.out.print(" "); 구문이 2개 있는 걸 보실 수 있습니다.

(" ") 안에 1, 2를 추가해서 출력하게 되면 쉽게 이해하실 수 있습니다.

 

하트 모양의 ^^ 상단2

(" ")를 통해 * 간의 간격을 띄워서 모양을 맞추는 것입니다.

 


 

하트(HEART) 모양의 V 하단 출력


다음은 하트 모양의 V 하단 출력하는 방법을 적어보도록 하겠습니다.

 

int i , j;
int top = 10;
int bottom = top * 2 + 1;
		
for( i = bottom; i >= 0; i -= 2 ){ 
	for( j = 0;  j <= bottom - i; j++ ){ 
		System.out.print(" ");
	}
		
	for( j = 0; j <= i * 2; j++ ) { 
		System.out.print("*");
	}
	
	System.out.print("\n");
}

 

bottom은 top의 * 개수에 맞춰서 출력합니다.

 

하트 모양의 V 하단

그리고, 여기서 또한 (" ")은 띄어쓰기를 통해 별 모양을 잡아주는 겁니다.

 

처음엔 한 칸, 다음은 세 칸, 다섯 칸... 계속 띄어쓰기를 넣어줍니다.

 

하트 모양의 V 하단2

 


 

하트(HEART) 모양 완전체 출력

 


int i , j;
int top = 10;
int topWidth = (top / 2) -2;
int bottom = top * 2 + 1;
		 
for( i = topWidth ; i < top; i += 2 ) { 
	for( j = 0; j <= (top - i); j++ ) {
		System.out.print(" ");
	}
	
	for( j = 0; j <= i * 2; j++ ) {
		System.out.print("*");
	}
			
	for( j = 0; j <= (top - i) * 2; j++ ) {
		System.out.print(" ");
	}
	
	for( j = 0; j <= i * 2; j++ ) {
		System.out.print("*");
	}
			
	System.out.print("\n"); 
}
		
for( i = bottom; i >= 0; i -= 2 ){ 
	for( j = 0;  j <= bottom - i; j++ ){ 
		System.out.print(" ");
	}
			
	for( j = 0; j <= i * 2; j++ ) { 
		System.out.print("*");
	}
			
	System.out.print("\n");
}

 

하트모양 완전체

 

하트 모양이 완성되었습니다.

다이아몬드(DIAMOND) 첫 번째


int num1 = 0;
int num2 = 0;
int num3 = 0;
		
		
for(num1 = 1; num1 < 6; num1++) {
	for(num3 = 0; num3 < 6-num1; num3++) {
		System.out.print(" ");
	}
			
	for(num2 = 0; num2 < num1*2-1; num2++) {
		System.out.print("*");
	}

	System.out.print("\n");
}
		
for(num1 = 6; num1 > 0; num1--) {
	for(num3 = 6-num1; num3 > 0; num3--) {
		System.out.print(" ");
	}
			
	for(num2 = num1*2-1; num2 > 0; num2--) {
		System.out.print("*");
	}
			
	System.out.print("\n");
}

 

출력하면 다음과 같은 모양이 출력됩니다.

 

다이아몬드 모양

 


 

다이아몬드(DIAMOND) 두 번째

 


int num1 = 0;
int num2 = 0;
int num3 = 0;
		
		
for(num1 = 1; num1 < 6; num1++) {
	for(num3 = 6; num3 > num1; num3--) {
		System.out.print(" ");
	}
			
	for(num2 = 1; num2 < num1*2; num2++) {
		System.out.print("*");
	}
			
	System.out.print("\n");
}
		
for(num1 = 6; num1 > 0; num1--) {
	for(num3 = num1; num3 < 6; num3++) {
		System.out.print(" ");
	}
			
	for(num2 = num1*2; num2 > 1; num2--) {
		System.out.print("*");
	}
	
	System.out.print("\n");
}

 

출력하면 다음과 같은 모양이 출력됩니다.

 

다이아몬드 모양

 

+ Recent posts