티스토리 뷰
// 패키지명 : 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외의 숫자는 비정상종료
}
}
}
랜덤함수를 이용하여 각 사각형에 랜덤으로 그림 출력
시간적 여유가 됬다면 빙고 상황시 선이라도 그어 볼까 했는데 시간이 없는 관계로 여기까지.
내가 봐도 건전하구나 껄껄껄
'Programming? > JAVA' 카테고리의 다른 글
Java I/O를 이용한 메모장 (0) | 2012.08.01 |
---|---|
Java I/O 파일 복사 (0) | 2012.08.01 |
운세보기 프로그램이라 쓰고 복불복 프로그램이라 읽는다 (0) | 2012.07.30 |
쓰레드를 이용한 타임워치 (0) | 2012.07.30 |
달력 출력 ver 메소드 (0) | 2012.07.12 |
- Total
- Today
- Yesterday
- DnF_카인
- 포세리앙 시밤...
- oracle
- jsp
- C Programming
- Android
- GOD EATER2
- League of legends
- java
- spring
- 무사헌터G
- jdbc
- XML
- Talesweaver_Palshu
- Unleashed
- PS VITA
- 이건사야되!
- PSP
- HTML
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |