수다닷컴

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

타자게임소스 주석이 궁금합니다

발랄한그1녀

2023.04.01




타자게임 소스 입니다 문제은행에 있는것이고 실행은 했습니다
import java.util.*;
import java.awt.*;
import java.awt.event.*;

class typinggameex3 extends frame
{
final int frame_width = 400;
final int frame_height = 300;

final int screen_width;
final int screen_height;

int speed = 500; // 단어가 떨어지는 속도... 높을 수록 느리다.
int interval = 2 * 1000; // 새로운 단어가 나오는 간격

int score = 0;
int life = 300;
int curlevel = 0;
final int max_level;

boolean isplaying = false;

wordgenerator wg = null; // 단어를 생성하는 쓰레드
worddropper wm = null; // 단어를 떨어뜨리는 쓰레드

fontmetrics fm; // 화면에서의 글자 길이를 구하는데 사용
threadgroup virusgrp = newthreadgroup(virus); // 바이러스 쓰레드들의 그룹

string[][] data = {
{태연,유리,윤아,효연,수영,서현,티파니,써니,제시카},
{태연,유리,윤아,효연,수영,서현,티파니,써니,제시카},
{태연,유리,윤아,효연,,수영,서현,티파니,써니,제시카},
{태연,유리,윤아,효연,수영,서현,티파니,써니,제시카},
};

final level[] level = {
new level(500, 2000, 1000, data[0]),
new level(250, 1500, 2000, data[1]),
new level(120, 1000, 3000, data[2]),
new level(100, 500, 4000, data[3]),
};

vectorwords = new vector();

textfield tf = newtextfield();
panel pscore = new panel(new gridlayout(1,3));
label lblevel = new label(level:+curlevel, label.center);
label lbscore = new label(score:+score, label.center);
label lblife = new label(life:+life, label.center);
mycanvas screen = new mycanvas();

typinggameex3() {
this(typinggame ver1.0);
}

typinggameex3(string title) {
super(title);

pscore.setbackground(color.yellow);
pscore.add(lblevel);
pscore.add(lbscore);
pscore.add(lblife);
add(pscore, north);
add(screen, center);
add(tf, south);

myeventhandler handler = new myeventhandler();
addwindowlistener(handler);
tf.addactionlistener(handler);

setbounds(500, 200, frame_width, frame_height);
setresizable(false);
setvisible(true);

screen_width = screen.getwidth();
screen_height = screen.getheight();
max_level = level.length-1;

fm = getfontmetrics(getfont());
}

public void repaint() { span la
super.repaint();
screen.repaint();
}

public void delay(int millis) {
try {
thread.sleep(millis);
} catch(exception e) {}
}

public void start() {
showlevel(0);
isplaying = true;

wg = new wordgenerator();
wg.start();

wm = new worddropper();
p classwm.start();
}

public level getlevel(int level) {
if(level max_level) level = max_level;
if(level 0) level = 0;

return level[level];
}

public boolean levelupcheck() {
level lvl = getlevel(curlevelng:0pt);
return score = lvl.levelupscore;
}

public synchronized int getcurlevel() {
return curlevel;
}

public synchronized void levelup() {
virusgrp.interrupt();
level lvl = getlevel(++curlevel);

lblevel.settext(level:+curlevel);
words.clear();
screen.clear();
showlevel(curlevel);

speed = lvl.speed;
interval = lvl.interval;
}

public void showlevel(int level) {
string tmp = level+level;
showtitle(tmp, 1 * 1000);
}

public void showtitle(string title, int time) {
graphics g = screen.getgraphics();

font titlefont = new font(serif,font.bold, 20);
g.setfont(titlefont);

fontmetrics fm = getfontmetrics(titlefont);
int width = fm.stringwidth(title);

g.drawstring(title, (screen_width-width)/2, screen_height/2);
delay(time);
}

public static void main(string[] args) {
typinggameex3 win = new typinggameex3();
win.start();
}

class worddropper extends thread {
public void run() {
outer:
while(isplaying) {
delay(speed);
for(int i=0; i words.size();i++){
word tmp = (word)words.get(i);

tmp.y += tmp.step; /o

if(tmp.y = screen_height) {
tmp.y = screen_height;
words.remove(tmp);
life--;
lblife.settext(life:+life);
break;
}
if(life = 0) {
isplaying = false;
showtitle(game over, 0);

break outer;
}
} // for

repaint();
}
} // end of run()
}

class wordgenerator extends thread {
public void run() {
while(isplaying) {
string[] data = level[getcurlevel()].data;

int rand = (int)(math.random()*data.length);

// 약 10번에 한번 꼴로 바이러스를 생성한다.
boolean isvirus = ((int)(math.random()*10) + 1) / 10 != 0;

word word = new word(data[rand], isvirus);
words.add(word);
delay(interval);
}
} // end of run()
}

class mycanvas extends canvas {
public void clear() {
graphics g = getgraphics();
g.clearrect(0, 0, frame_width, frame_height);
}

public void paint(graphics g) {
clear();

for(int i=0; i words.size(); i++) {
word tmp = (word)words.get(i);
g.setcolor(tmp.color);
g.drawstring(tmp.word, tmp.x,tmp.y);
}
}
}

class virusthread extends thread {
public virusthread(threadgroup group, string name){
super(group,name);
}

public void run() {
int rand = (int)(math.random()*5);

int oldvalue= 0;
int virustime =10 * 1000; // 바이러스 동작시간을 10초로 설정한다.

switch(rand) {
case 0:
speed = speed / 2;
break;
case 1:
interval = interval / 2;
break;
case 2:
speed = speed * 2;
break;
case 3:
interval = interval * 2;
break;
case 4:
words.clear();
break;
} // swtich

delay(virustime);

int curlevel =getcurlevel();
speed = level[curlevel].speed;
interval = level[curlevel].interval;
} // end of run()
}

class level {
int speed;
int interval;
int levelupscore;
string[] data;

level(int speed, int interval, int levelupscore, string[] data) {
this.speed = speed;
this.interval = interval;
this.levelupscore = levelupscore;
this.data = data;
}
}// gamelevel

class word {
string word = ;
int x = 0;
int y = 0;
int step = 5;

color color = color.black;
boolean isvirus = false;

;word(string word) {
this(word, 10, false);
}

word(string word, boolean isvirus) {
this(word, 10,isvirus);
}

word(string word, int step, boolean isvirus) {
this.word = word;
this.step = step;
this.isvirus = isvirus;

if(isvirus) color = color.red;

int strwidth = fm.stringwidth(word);

x = (int)(math.random() * screen_width);

if(x + strwidth= screen_width)
x = screen_width - strwidth;
}

public string tostring() {
return word;
}
}// end of class word

class myeventhandler extendswindowadapter implements actionlistener {
public void actionperformed(actionevent ae) {
string input = tf.gettext().trim();
tf.settext();

system.out.println(input);

if(!isplaying) return;

for(int i=0; i words.size() ; i++) {
word tmp = (word)words.get(i);

if(input.equals(tmp.word)) {
words.remove(i);
score += input.length() * 50;
lbscore.settext(score:+score);
toolkit.getdefaulttoolkit().beep();

if(curlevel!=max_level && levelupcheck()) {
levelup();
} else {
if(tmp.isvirus) {
new virusthread(virusgrp, virus).start();
}
}

break;
}
} // for

repaint(); // 변화가 있을때 마다 호출해야 바로 바로 적용된다.
}

public void windowclosing(windowevent e) {
e.getwindow().setvisible(false);
e.getwindow().dispose();
system.exit(0);
}
} // class myeventhandler


타자게임 소스 입니다 문제발표를 해야될꺼 같은데 주석 좀 부탁드립니다.

신청하기





COMMENT

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

  • 누리봄

    첫단계 부터 순서대로 공부하면 쉽게 할텐데... 급해서 그런거겠죠?

  • 다슬

    제가 짠 소스가 슬슬 돌아다니는군요. ^^

번호 제 목 글쓴이 날짜
2697830 [질문]어느 범위로 들어가면 다음 프레임으로 넘어갈려면??? 맑다 2025-06-11
2697806 [질문] 이미지나 텍스트를 플래시상으로 불러올때 미라 2025-06-11
2697778 투명도 css-validator 체크 문의 (3) 츄릅 2025-06-11
2697729 오류가딱1개...... 아롱별 2025-06-10
2697703 개인 일기장 홈페이지 만들기 푸르 2025-06-10
2697676 nChar 질문 소율 2025-06-10
2697652 xhtml 관련 질문이요 ! (6) 클 2025-06-09
2697626 warning: variable "dbUS" was declared but never referenced (1) 꽃내 2025-06-09
2697567 mfc 질문드립니다! (2) 물맑 2025-06-09
2697542 iframe은 표준? 비표준? (2) 조은 2025-06-08
2697516 datagrid 활성/비활성시 알파값 변경 시내 2025-06-08
2697487 html5 css3 학원 추천좀해주세요 (1) 예그리나 2025-06-08
2697459 이런 질문도 답변해주실지는 모르겠습니다만 병특에 관한 질문입니다. 승아 2025-06-08
2697422 가운데 정렬하는 방법좀 흑흑흑... (3) 목련 2025-06-07
2697395 홈페이지 기본구조에 대해서... (6) 모든 2025-06-07
2697366 에..조금 짜보고 다시 질문입니다. (2) 나샘 2025-06-07
2697333 li 가운데 정렬.....도와 주세용... (7) 초고리 2025-06-07
2697284 이미지를 흐리게 (2) 난새 2025-06-06
2697258 VC++ 6.0(studio)을 깔면서 재미가 붙었는데..ㅠㅠ (4) 앵겨쪼 2025-06-06
2697228 WorkFlow가 궁금합니다.. 다들 어떻게 하시는지.. (1) 애기 2025-06-06
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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