자바로 테트리스 만들었는데 도형이 안나와요;;
하랑
실행은 됩니다;;
근데 도형이 떨어지긴 하는데 안보여요;; 가만히 나두면 게임오버 되는걸로 봐선 떨어 지는거 같아요;;
클래스파일 하나 입니다...그리고 저는 에플릿으로 만들었는데;; 에플릿으로 실행안되게 바꿀순 없을까요?
그냥 일반 awt 나 swing 써서 만든것처럼 만들순 없을까요?
-----------소스------------
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class game extends applet implements runnable, actionlistener{
thread clock;
image off;//메모리 상의 가상 화면
graphics offg;
random r;
boolean[] [] map;
color[] colortype;
color[][] colormap;
int blocktype;
int[] blockx;
int[] blocky;
int blockpos;
int score;
int delaytime;
int rungame;
audioclip turnaudio;
audioclip deleteaudio;
audioclip gameoveraudio;
button startbutton;
panel buttonpanel;
public void init(){
//메모리상에 가상화면 셋팅
off = createimage(181,316);
offg=off.getgraphics();
offg.setcolor(color.white);
offg.fillrect(0,0,192,192);
turnaudio = getaudioclip(getcodebase(),turn.au);
deleteaudio= getaudioclip(getcodebase(),delete.au);
gameoveraudio=getaudioclip(getcodebase(),gameover.au);
//gui
setlayout(new borderlayout());
buttonpanel = new panel();
startbutton = ntton = new button(start);
startbutton.addactionlistener(this);
buttonpanel.add(startbutton);
add(south,buttonpanel);
map= new boolean[12][21];
colormap = new color[12][21];
colortype= new color[7];
blockx=new int[4];
blocky=new int[4];
blockpos=0;
r= new random();
blocktype=math.abs(r.nextint()%7);
setblockxy(blocktype);
drawblock();
drawmap();
drawgrid();
score=0;
delaytime=1000;
rungame=0;
addkeylistener(new mykeyhandler ());
}
public void setcolortype ()
{
colortype[0] = new color(65,228,82);
colortype[1] = new color(58,98,235);
colortype[2] = new color(128,0,64);
colortype[3] = new color(255,35,31);
colortype[4] = new color(68,17,111);
colortype[5] = new color(246,118,57);
colortype[6] = new color(224,134,4);
}
public void setblockxy(int type)
{
switch (type){
case 0:
blockx[0]=5; blocky[0]=0;
blockx[1]=6; blocky[1]=0;
blockx[2]=5; blocky[2]=1;
blockx[3]=6; blocky[3]=1;
break;
case 1:
blockx[0]=6; blocky[0]=0;
blockx[1]=5; blocky[1]=1;
blockx[2]=6; blocky[2]=1;
blockx[3]=7; blocky[3]=1;
break;
case 2:
blockx[0]=7; blocky[0]=0;
blockx[1]=5; blocky[1]=1;
blockx[2]=6; blocky[2]=1;
blockx[3]=7; blocky[3]=1;
break;
case 3:
blockx[0]=5; blocky[0]=0;
blockx[1]=5; blocky[1]=1;
blockx[2]=6; blocky[2]=1;
blockx[3]=7; blocky[3]=1;
break;
case 4:
blockx[0]=5; blocky[0]=0;
blockx[1]=5; blocky[1]=1;
blockx[2]=6; blocky[2]=1;
blockx[3]=6; blocky[3]=2;
break;
case 5:
blockx[0]=6; blocky[0]=0;
blockx[1]=5; blocky[1]=1;
blockx[2]=6; blocky[2]=1;
blockx[3]=5; blocky[3]=2;
break;
case 6:
blockx[0]=4; blocky[0]=0;
blockx[1]=5; blocky[1]=0;
blockx[2]=6; blocky[2]=0;
blockx[3]=7; blocky[3]=0;
break;
}//switch 닫힘
}//setblockxy 닫힘
public void start()
{
if(clock==null){
clock=new thread(this);
clock.start();//시계 시작
}//if문 닫힘
}//start 메서드 닫힘
public void paint(graphics g)
{
g.drawimage(off,0,0,this);
}
public void update(graphics g){
paint(g);
}
public void run()
{
while(true)
{
trynbsp;try{
clock.sleep(delaytime);
}catch(interruptedexception ie){}
dropblock();
switch (rungame){
case 1:
drawblock();
drawmap();
drawgrid();
break;
case 2:
drawscore();
break;
default :
drawtitle();
break;
}
repaint();//paint호출
}
}
public void drawscore()
{
offg.setcolor(color.white);
offg.fillrect(35,120,110,70);
offg.setcolor(color.black);
offg.drawrect(40,125,100,60);
offg.setcolor(color.red);
offg.drawstring(game over !,56,150);
offg.setcolor(color.blue);
offg.drawstring(score : +score,56,170);
}
public void drawtitle()
{
offg.setcolor(color.white);
offg.fillrect(29, 120, 123, 70);
offg.setcolor(color.black);
offg.drawrect(31, 125,121, 61);
offg.setcolor(color.red);
offg.drawstring(tetris,70,150);
offg.setcolor(color.blue);
offg.drawstring(press start button!, 35, 170);
}
public void dropblock()
{
removeblock();
if(checkdrop()){
for(int i=0; i4; i++){
blocky[i]=blocky[i]+1;
}
}else{
drawblock();
nextblock();
}
}
public void delline()
{
boolean delok;
for (int row=20; row=0; row--){
delok = true;
for(int col=0; col12;col++){
if(!map[col][row]) delok = false;
}
if(delok){
deleteaudio.play();
score+=10;//점수계산
if(score1000){
delaytime=1000-score;
}else{
delaytime=0;
}
for(int delrow=row; delrow0; delrow--){
for(int delcol=0; delcol12; delcol++){
map[delcol][delrow]= map [delcol][delrow-1];
colormap[delcol][delrow]= colormap[delcol][delrow-1];
}
}
for(int i=0; i12; i++){
map[0][i]=false;
colormap[0][i]=color.white;
}
row++;
}
}
}
public void nextblock()
{
blocktype= math.abs(r.nextint()%7);
blockpos =0;
delline();
setblockxy(blocktype);
checkga;checkgameover();
}
public void checkgameover()
{
for(int i=0; i4; i++){
if(map[blockx[i]][blocky[i]]){
if(rungame==1){
gameoveraudio.play();
rungame=2;
}
}
}
}
public void removeblock()
{
for(int i=0; i4; i++){
map[blockx[i]][blocky[i]]=false;
colormap[blockx[i]][blocky[i]]=color.white;
}
}
public boolean checkdrop()
{
boolean dropok=true;
for (int i=0; i4; i++)
{
if((blocky[i]+1)!=21){
if(map[blockx[i]][blocky[i]+1]) dropok=false;
}else{
dropok=false;
}
}
return dropok;
}
public void drawblock()
{
for(int i=0; i4; i++){
map[blockx[i]][blocky[i]]=true;
colormap[blockx[i]][blocky[i]]=colortype[blocktype];
}
}
public void drawmap()
{
for (int i=0; i12; i++){
for(int j=0; j21; j++){
if(map[i][j]){
offg.setcolor(colormap[i][j]);
offg.fillrect(i*15,j*15,15,15);
}else{
offg.setcolor(color.white);
offg.fillrect(i*15,j*15,15,15);
}
}
}
}
public void drawgrid()
{
offg.setcolor(new color(190,190,190));
for(int i=0; i12; i++){
for(int j=0; j21; j++){
offg.drawrect(i*15,j&15,15,15);
}
}
}
public void stop()
{
if((clock!=null)&&(clock.isalive())){
clock=null;//시계정지 (없앰)
}
}
public void actionperformed(actionevent e)
{
blockpos=0;
for(int i=0; i12; i++){
for(int j=0; j21; j++){
map[i][j]=false;
}
}
r=new random();
blocktype=math.abs(r.nextint()%7);
setblockxy(blocktype);
drawblock();
drawmap();
drawgrid();
score=0;
delaytime=1000;
rungame=1;
this.requestfocus();
}
class mykeyhandler extends keyadapter
{
public void keypressed(keyevent e)
{
int keycode= (int)e.getkt)e.getkeycode();
if(keycode==keyevent.vk_left){
if(checkmove(-1)){
for(int i=0; i4; i++){
blockx[i]=blockx[i]-1;
}
}
}
if(keycode==keyevent.vk_right);{
if(checkmove(1)){
for(int i=0; i4; i++){
blockx[i]=blockx[i]+1;
}
}
}
if(keycode==keyevent.vk_down){
removeblock();
if(checkdrop()){
for(int i=0; i4; i++){
blocky[i]=blocky[i]+1;
}
}else{
drawblock();
}
}
if(keycode==keyevent.vk_up){
int[] tempx= new int[4];
int[] tempy=new int[4];
for(int i=0; i4; i++){
tempx[i]= blockx[i];
tempy[i]= blocky[i];
}
removeblock();
turnblock();
if(checkturn()){
turnaudio.play();
if(blockpos4){
blockpos++;
}else{
blockpos=0;
}
}else{
for(int i=0; i4; i++){
blockx[i]=tempx[i];
blocky[i]=tempy[i];
map[blockx[i]][blocky[i]]=true;
colormap[blockx[i]][blocky[i]]=colortype[blocktype];
}
}
}
drawblock();
drawmap();
drawgrid();
repaint();
}
public boolean checkturn()
{
boolean turnok=true;
for(int i=0; i4; i++){
if((blockx[i]=0)&&(blockx[i]12)&&(blocky[i]=0)&&(blocky[i]21)){
if(map[blockx[i]][blocky[i]]) turnok=false;
}else{
turnok=false;
}
}
return turnok;
}
public boolean checkmove(int dir)
{
boolean moveok=true;
removeblock();
for(int i=0; i4; i++){
if(((blockx[i]+dir)=0)&&((blockx[i]+dir)12)){
if(map[blockx[i]+dir][blocky[i]]) moveok=false;
}else{
moveok=false;
}
}
if(!moveok) drawblock();
return moveok;
}
public void turnblock()
{
switch(blocktype){
case 1:
switch(blockpos){
case 0:
blockx[0]=blockx[0]; blocky[0]=blocky[0];
blockx[1]=blockx[1]; blocky[1]=blocky[1];
blockx[2]=blockx[2]; blocky[2]=blocky[2];
blockx[3]=blockx[3]-1; blocky[3]=blocky[3]+1;
break;
case 1:
blockx[0]=blockx[0]-1; blocky[0]=blocky[0];
blockx[1]=blockx[1]+1; blocky[1]=blocky[1]-1;
blockx[2]=blockx[2]+1; blocky[2]=blocky[2]-1;
blockx[3]=blockx[3]; blocky[3]=blocky[3]-1;
break;
case 2:
blockx[0]=blockx[0]+1; blocky[0]=blocky[0];
blockx[1]=blockx[1]; blocky[1]=blocky[1]+1;
blockx[2]=blockx[2]; blocky[2]=blocky[2]+1;
blockx[3]=blockx[3]; blocky[3]=blocky[3]+1;
break;
case 3:
blockx[0]=blockx[0]; blocky[0]=blocky[0];
blockx[1]=blockx[1]-1; blocky[1]=blocky[1];
blockx[2]=blockx[2]-1; blocky[2]=blocky[2];
blockx[3]=blockx[3]-1; blocky[3]=blocky[3]-11;
break;
}
break;
case 2:
switch(blockpos){
case 0:
blockx[0]=blockx[0]-2; blocky[0]=blocky[0];
blockx[1]=blockx[1]+1; blocky[1]=blocky[1]-1;
blockx[2]=blockx[2]; blocky[2]=blocky[2];
blockx[3]=blockx[3]-1; blocky[3]=blocky[3]+1;
break;
case 1:
blockx[0]=blockx[0]; blocky[0]=blocky[0];
blockx[1]=blockx[1]; blocky[1]=blocky[1];
blockx[2]=blockx[2]+1; blocky[2]=blocky[2]-1;
blockx[3]=blockx[3]-1; blocky[3]=blocky[3]-1;
break;
case 2:
blockx[0]=blockx[0]; blocky[0]=blocky[0];
blockx[1]=blockx[1]; blocky[1]=blocky[1];
blockx[2]=blockx[2]-1; blocky[2]=blocky[2]+2;
blockx[3]=blockx[3]+2; blocky[3]=blocky[3]+1;
break;
case 3:
blockx[0]=blockx[0]+1; blocky[0]=blocky[0];
blockx[1]=blockx[1]-1; blocky[1]=blocky[1];
blockx[2]=blockx[2]; blocky[2]=blocky[2]-1;
blockx[3]=blockx[3]; blocky[3]=blocky[3]-1;
break;
&nnbsp; }
break;
case 3:
switch(blockpos){
case 0:
blockx[0]=blockx[0]+1; blocky[0]=blocky[0];
blockx[1]=blockx[1]+1; blocky[1]=blocky[1];
blockx[2]=blockx[2]-1; blocky[2]=blocky[2]+1;
blockx[3]=blockx[3]-1; blocky[3]=blocky[3]+1;
break;
case 1:
blockx[0]=blockx[0]-2; blocky[0]=blocky[0];
blockx[1]=blockx[1]-1; blocky[1]=blocky[1]-1;
blockx[2]=blockx[2]+1; blocky[2]=blocky[2]-2;
blockx[3]=blockx[3]; blocky[3]=blocky[3]-1;
break;
case 2:
blockx[0]=blockx[0]+1; blocky[0]=blocky[0];
blockx[1]=blockx[1]+1; blocky[1]=blocky[1];
blockx[2]=blockx[2]-1; blocky[2]=blocky[2]+1;
blockx[3]=blockx[3]-1; blocky[3]=blocky[3]+1;
break;
case 3:
blockx[0]=blockx[0]; blocky[0]=blocky[0];
blockx[1]=blockx[1]-1; blocky[1]=blocky[1]+1;
blockx[2]=blockx[2]+1; blocky[2]=blocky[2];
blockx[3]=blockx[3]+2; blocky[3]=blocky[3]-1;
break;
}
break;
case 4:
switch(blockpos){
case 0:
case 2:
blockx[0]=blockx[0]+1; blocky[0]=blocky[0];
blockx[1]=blockx[1]+2; blocky[1]=blocky[1]-1;
blockx[2]=blockx[2]-1; blocky[2]=blocky[2];
blockx[3]=blockx[3]; blocky[3]=blocky[3]-1;
break;
case 1:
case 3:
blockx[0]=blockx[0]-1; blocky[0]=blocky[0];
blockx[1]=blockx[1]-2; blocky[1]=blocky[1]+1;
blockx[2]=blockx[2]+1; blocky[2]=blocky[2];
blockx[3]=blockx[3]; blocky[3]=blocky[3]+1;
break;
}
break;
case 5:
switch(blockpos){
case 0:
case 2:
blockx[0]=blockx[0]-1; blocky[0]=blocky[0]-1;
blockx[1]=blockx[1]+1; blocky[1]=blocky[1];
blockx[2]=blockx[2]; blocky[2]=blocky[2];
blockx[3]=blockx[3]+2; blocky[3]=blocky[3]-2;
break;
case 1:
case 3:
blockx[0]=blockx[0]+1; blocky[0]=blocky[0];
blockx[1]=blockx[1]-1; blocky[1]=blocky[1]+1;
blockx[2]=blockx[2]; blocky[2]=blocky[2];
blockx[3]=blockx[3]-2; blocky[3]=blocky[3]+1;
break;
}
break;
case 6:
&n switch(blockpos){
case 0:
case 2:
blockx[0]=blockx[0]+2; blocky[0]=blocky[0];
blockx[1]=blockx[1]+1; blocky[1]=blocky[1]+1;
blockx[2]=blockx[2]; blocky[2]=blocky[2]+2;
blockx[3]=blockx[3]-1; blocky[3]=blocky[3]+3;
break;
case 1:
case 3:
blockx[0]=blockx[0]-2; blocky[0]=blocky[0];
blockx[1]=blockx[1]-1; blocky[1]=blocky[1]-1;
blockx[2]=blockx[2]; blocky[2]=blocky[2]-2;
blockx[3]=blockx[3]+1; blocky[3]=blocky[3]-3;
break;
}
break;
}
}
}
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2696043 | 제이쿼리 .scroll() 관련 질문드립니다 | 이거이름임 | 2025-05-26 |
2695984 | 마크업상으로 하단에 있으나 우선적으로 이미지파일을 다운로드받는 방법 (1) | 들꿈 | 2025-05-25 |
2695934 | tr 속성값 (9) | 새 | 2025-05-25 |
2695905 | ASP로 개발됐을 때 css가 달라져요 ㅠㅠ (4) | 슬아라 | 2025-05-24 |
2695878 | form을 이용한 다른 페이지로 넘기는 방법을 알려주세요 (1) | 핫파랑 | 2025-05-24 |
2695844 | 저기 암호화 및 복호화 프로그램.. 만들어볼려는대 (2) | 한빛 | 2025-05-24 |
2695814 | [질문] PDA에서 애플릿이 가능한가요? (1) | 봄시내 | 2025-05-24 |
2695785 | 웹 설정 도와줄분 | 화이트캣 | 2025-05-23 |
2695730 | 갑자기 기억이 안나는데 accesskey 속성.. | 빛나라 | 2025-05-23 |
2695702 | [질문] Java 버전 차이에 의한 오류?!! (2) | 검사 | 2025-05-23 |
2695672 | 자바 임베디드 쪽으로 배우고 싶은데요..질문이요.. (1) | 뽀그리 | 2025-05-22 |
2695647 | 헉! 이클립스(v3.1)에서 발생되는 널포인트 익셉션? ;;; (3) | 아빠몬 | 2025-05-22 |
2695586 | IFRAME 캐싱 질문 | 봄나비 | 2025-05-22 |
2695498 | [질문]실행가능한 jar파일.. 정말 이해가 안가네요... ㅡㅜ;; | 터1프한렩 | 2025-05-21 |
2695468 | 자바랑 이클립스에서요.. | 스킬 | 2025-05-21 |
2695375 | Mysql 연동하는 자바 질문있습니다. | 아리솔 | 2025-05-20 |
2695319 | 파워포인트 파일을 저장할 수 있을까요? | 시윤 | 2025-05-19 |
2695289 | [질문]Tween 값의 정도를 알고 싶습니다. | 타마 | 2025-05-19 |
2695238 | c 와 c++의 시작 (10) | ChocoHoilc | 2025-05-18 |
2695215 | 탑메뉴의 repeat-x .배경이 두가지에요ㅠ ㅠ | 널위해 | 2025-05-18 |