티스토리 뷰

// 패키지명 : com.sist


// MyRectangle class

// SlotPanel class의 이미지 경로는 다른경로로 지정해도 상관 없음. 

// 단 그림 파일은 되도록이면 icon1~icon7로 하는것이 좋음


// 사각형 제작 클래스


package com.sist;


public class MyRectangle {

//좌표 변수 설정

private int left;

private int top;

private int right;

private int bottom;

//사각형 생성 함수

public void setRect(int left, int top, int right, int bottom)

{

this.left=left;

this.top=top;

this.right=right;

this.bottom=bottom;

}

//사각형 가로 설정

public int getWidth()

{

return right-left;

}

//사각형 세로 설정

public int getHeight()

{

return bottom-top;

}

//해당영역에 좌표가 들어왔는지 확인

public boolean ptInRect(int x, int y)

{

boolean bCheck=false;

if((x>left && x<right) && (y>top && y<bottom))

bCheck=true;

else

bCheck=false;

return bCheck;

}

//getter/setter

public int getLeft() {

return left;

}

public void setLeft(int left) {

this.left = left;

}

public int getTop() {

return top;

}

public void setTop(int top) {

this.top = top;

}

public int getRight() {

return right;

}

public void setRight(int right) {

this.right = right;

}

public int getBottom() {

return bottom;

}

public void setBottom(int bottom) {

this.bottom = bottom;

}

}




// SlotPanel class


package com.sist;


import java.awt.*;


import javax.swing.*;

public class SlotPanel extends JPanel{

//사각형 9개 배치를 위한 2차원 배열 선언

MyRectangle[][] rect = new MyRectangle[3][3];

//이미지를 넣기 위한 2차원 배열 선언

Image[][] icon= new Image[3][3];

//사각형 그리기

public SlotPanel()

{

// 사각형 9개를 배치

for( int i=0; i<3; i++)

{

for(int j=0; j<3; j++)

{

rect[i][j]=new MyRectangle(); //메모리 할당

//각 사각형마다의 좌표점 설정

rect[i][j].setRect(120+j*150, 50+i*150, 118+(j+1)*150, 48+(i+1)*150);

}

}

setImage();

}

//이미지 탑재

public void setImage()

{

for(int i=0; i<3; i++)

{

for(int j=0; j<3; j++)

{

int no=(int)(Math.random()*7)+1; //1~7 난수 발생, 확률 조정은 여기서 하면 됨

//icon1.gif~icon7.gif로 등록했으므로 난수가 들어오는대로 그림이 랜덤으로 들어옴

icon[i][j]=Toolkit.getDefaultToolkit().getImage("c:\\img\\icon"+no+".gif");

}

}

}

//사각형 그리기

public void paint(Graphics g)

{

//패널전체를 흰색으로 가림

g.setColor(Color.white);

g.fillRect(0,0,getWidth(),getHeight());

g.setColor(Color.black);

for(int i=0; i<3; i++)

{

for(int j=0; j<3; j++)

{

g.drawRect(rect[i][j].getLeft(),rect[i][j].getTop(),

  rect[i][j].getWidth(),rect[i][j].getHeight());

//그림 배치

g.drawImage(icon[i][j],rect[i][j].getLeft(),rect[i][j].getTop(),

   rect[i][j].getWidth(),rect[i][j].getHeight(),this);

}

}

}


}




// MainClass class


package com.sist;



import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.*;

public class MainClass extends JFrame implements ActionListener,Runnable{

//배치

SlotPanel sp=new SlotPanel();

JMenuItem startItem, stopItem, exitItem;

Thread t;

public MainClass()

{

JMenuBar bar=new JMenuBar();

JMenu menu=new JMenu("Game");

startItem=new JMenuItem("Start");

stopItem=new JMenuItem("Stop");

exitItem=new JMenuItem("Exit");

menu.add(startItem);

menu.add(stopItem);

menu.addSeparator();

menu.add(exitItem);

bar.add(menu);

setJMenuBar(bar);

add("Center",sp);

setSize(800,600);

setVisible(true);

//이벤트 등록

startItem.addActionListener(this);

stopItem.addActionListener(this);

exitItem.addActionListener(this);

}

public static void main(String[] args){

new MainClass();

}


@Override

public void run() {

// TODO Auto-generated method stub

try

{

while(true)

{

sp.setImage();

sp.repaint();

Thread.sleep(30);

}

}catch(Exception ex)

{

}

}


@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getSource()==startItem)

{

t=new Thread(this);

t.start();

}

else if(e.getSource()==stopItem)

{

t.interrupt();

}

else if(e.getSource()==exitItem)

{

dispose(); // 메모리 해제

System.exit(0); // 윈도우 정상종료  0외의 숫자는 비정상종료



}

}


}






랜덤함수를 이용하여 각 사각형에 랜덤으로 그림 출력

시간적 여유가 됬다면 빙고 상황시 선이라도 그어 볼까 했는데 시간이 없는 관계로 여기까지.


내가 봐도 건전하구나 껄껄껄

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함