수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

자바로 테트리스 만들었는데 도형이 안나와요;;

하랑

2023.04.01






실행은 됩니다;;

근데 도형이 떨어지긴 하는데 안보여요;; 가만히 나두면 게임오버 되는걸로 봐선 떨어 지는거 같아요;;

클래스파일 하나 입니다...그리고 저는 에플릿으로 만들었는데;; 에플릿으로 실행안되게 바꿀순 없을까요?

그냥 일반 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;
}
}
}
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
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
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com