목차
객체지향 프로그래밍
목 차
①서론
②본론
③결론
④코드
목 차
①서론
②본론
③결론
④코드
본문내용
기장의 크기를 지정
}
void rollcall(){ //선수를 소개하기 위해서 선수를 불러온다
p.info();
q.info();
}
void createBall(){
ball = new Ball(field); //공을 불러온다
}
void createPlayers(){
p = new Player("맨유", "박지성","오른발잡이", -20, 0, field);
q = new Player("레딩", "설기현", "왼발잡이", 20, 0, field); //플레이어에 대한 상세한 설명
}
void start(){
System.out.println("*START*");
timeout=false;
}
void stop(){
timeout = true;
}
void run(){
int clock = 0;
int mScore = 0; //0:0으로 시작하기 위해 변수값 0으로 지정(맨유와 풀럼의 스코어)
int pScore = 0;
while(!timeout){
clock++; System.out.print("["+clock+"]"); //경기시간 표시
int dist = p.move(ball);
int distq = q.move(ball); //선수들이 공쪽으로 달려감
r = p;
if (distq < dist){r = q; dist = distq;} // 가까운 선수
if(dist<5){
r.kick(ball); // 5ft 이내 공을 찬다
System.out.print("->"+r.myname+"kick->");
}
goal = ball.move();
if(goal == true){
System.out.println(r.팀명 + "의 골입니다.");
clock++;
p = new Player("맨유", "박지성","오른발잡이", -20, 0,field);
q = new Player("레딩", "설기현", "왼발잡이", 20, 0,field);
//선수 위치를 초기화
ball = new Ball(field); //공위치 초기화
if(r.myname == p.myname){
mScore++; // 맨유의 득점
}
if(r.myname == q.myname){
pScore++; //풀럼의 득점
}
createPlayers();
createBall();
}
System.out.println("");
try{
Thread.sleep(400);
}
catch(Exception e){} //CarRace 에서 배웠던 시간을 조절하는 함수
if(clock > 45){
stop();
}
}
System.out.println("*TIME OUT*");
System.out.println("경기스코어 "+ p.팀명 +mScore+" 대 "+ q.팀명 +pScore+"입니다");
//경기스코어 추가
}
}
//경기장 클래스
class Field {
int x0, x1, y0, y1, w, h;
Field(int wide, int high) {
w = wide; h = high;
x1 = w/2; y1 = h/2;
x0 = -x1; y0 = -y1;
}
}
//공의 위치 클래스
class Ball {
Field f;
int x, y;
double dx, dy;
Ball(Field f) { x = 0; dx = 0; y = 0; dy = 0; this.f = f;}
boolean move() {
x = (int)(x + dx);
y = (int)(y + dy);
dx = dx * 0.8; dy = dy * 0.8; // 감속 비율
System.out.println("공(" + x + "," + y +")");
if (x >= 50) return true;
else return false;
}
void fly(double vx, double vy){ dx = dx +vx; dy += vy; }
int getX() { return x; }
int getY() { return y; }
}
//선수 클래스
class Player {
Field f;
int x, y;
double dx, dy, myspeed;
String myname,팀명, 자주쓰는발;
Player(String member, String name, String foot, int x0, int y0, Field f){ //생성자
x = x0;
y = y0;
myname = name;
this.f = f;
팀명 = member;
자주쓰는발 = foot;
}
int move(Ball b) {
dash(b);//공을향해 dash(b);
x = (int)(x + dx);
y =(int)(y + dy);
double dist = distance(b);
System.out.println (myname + " "+ (int)dist);
return (int)dist;
}
double distance(Ball b) {
double x2x = x - b.getX();
double y2y = y- b.getY();
return Math.sqrt(x2x*x2x + y2y*y2y);
}
void kick(Ball b){
double kx = dx*2 + randM(10) - 5;
double ky = dy*2 + randM(8) - 5;
b.fly(kx, ky);
myspeed = myspeed / 2;
}
double randM(int M){
return Math.random() * M;
}
void dash (Ball b) { //공을향해 질주하는 속도를 결정하는 메소드
double dist = distance(b) + 1; // (+1 = 선수와 공의 거리가 0이 되는 경우를 방지)
myspeed = myspeed*0.8 + randM(4); //질주 속도를 조절
dx = (b.getX() - x)/dist * myspeed; //dx를 결정
dy = (b.getY() - y)/dist * myspeed; //dy를 결정
}
void info(){
System.out.println(팀명+"의" + myname +" "+자주쓰는발 + "입니다");
}
int getX() { return x; }
int getY() { return y; }
}
}
void rollcall(){ //선수를 소개하기 위해서 선수를 불러온다
p.info();
q.info();
}
void createBall(){
ball = new Ball(field); //공을 불러온다
}
void createPlayers(){
p = new Player("맨유", "박지성","오른발잡이", -20, 0, field);
q = new Player("레딩", "설기현", "왼발잡이", 20, 0, field); //플레이어에 대한 상세한 설명
}
void start(){
System.out.println("*START*");
timeout=false;
}
void stop(){
timeout = true;
}
void run(){
int clock = 0;
int mScore = 0; //0:0으로 시작하기 위해 변수값 0으로 지정(맨유와 풀럼의 스코어)
int pScore = 0;
while(!timeout){
clock++; System.out.print("["+clock+"]"); //경기시간 표시
int dist = p.move(ball);
int distq = q.move(ball); //선수들이 공쪽으로 달려감
r = p;
if (distq < dist){r = q; dist = distq;} // 가까운 선수
if(dist<5){
r.kick(ball); // 5ft 이내 공을 찬다
System.out.print("->"+r.myname+"kick->");
}
goal = ball.move();
if(goal == true){
System.out.println(r.팀명 + "의 골입니다.");
clock++;
p = new Player("맨유", "박지성","오른발잡이", -20, 0,field);
q = new Player("레딩", "설기현", "왼발잡이", 20, 0,field);
//선수 위치를 초기화
ball = new Ball(field); //공위치 초기화
if(r.myname == p.myname){
mScore++; // 맨유의 득점
}
if(r.myname == q.myname){
pScore++; //풀럼의 득점
}
createPlayers();
createBall();
}
System.out.println("");
try{
Thread.sleep(400);
}
catch(Exception e){} //CarRace 에서 배웠던 시간을 조절하는 함수
if(clock > 45){
stop();
}
}
System.out.println("*TIME OUT*");
System.out.println("경기스코어 "+ p.팀명 +mScore+" 대 "+ q.팀명 +pScore+"입니다");
//경기스코어 추가
}
}
//경기장 클래스
class Field {
int x0, x1, y0, y1, w, h;
Field(int wide, int high) {
w = wide; h = high;
x1 = w/2; y1 = h/2;
x0 = -x1; y0 = -y1;
}
}
//공의 위치 클래스
class Ball {
Field f;
int x, y;
double dx, dy;
Ball(Field f) { x = 0; dx = 0; y = 0; dy = 0; this.f = f;}
boolean move() {
x = (int)(x + dx);
y = (int)(y + dy);
dx = dx * 0.8; dy = dy * 0.8; // 감속 비율
System.out.println("공(" + x + "," + y +")");
if (x >= 50) return true;
else return false;
}
void fly(double vx, double vy){ dx = dx +vx; dy += vy; }
int getX() { return x; }
int getY() { return y; }
}
//선수 클래스
class Player {
Field f;
int x, y;
double dx, dy, myspeed;
String myname,팀명, 자주쓰는발;
Player(String member, String name, String foot, int x0, int y0, Field f){ //생성자
x = x0;
y = y0;
myname = name;
this.f = f;
팀명 = member;
자주쓰는발 = foot;
}
int move(Ball b) {
dash(b);//공을향해 dash(b);
x = (int)(x + dx);
y =(int)(y + dy);
double dist = distance(b);
System.out.println (myname + " "+ (int)dist);
return (int)dist;
}
double distance(Ball b) {
double x2x = x - b.getX();
double y2y = y- b.getY();
return Math.sqrt(x2x*x2x + y2y*y2y);
}
void kick(Ball b){
double kx = dx*2 + randM(10) - 5;
double ky = dy*2 + randM(8) - 5;
b.fly(kx, ky);
myspeed = myspeed / 2;
}
double randM(int M){
return Math.random() * M;
}
void dash (Ball b) { //공을향해 질주하는 속도를 결정하는 메소드
double dist = distance(b) + 1; // (+1 = 선수와 공의 거리가 0이 되는 경우를 방지)
myspeed = myspeed*0.8 + randM(4); //질주 속도를 조절
dx = (b.getX() - x)/dist * myspeed; //dx를 결정
dy = (b.getY() - y)/dist * myspeed; //dy를 결정
}
void info(){
System.out.println(팀명+"의" + myname +" "+자주쓰는발 + "입니다");
}
int getX() { return x; }
int getY() { return y; }
}
키워드
추천자료
프로그래밍 언어에서의 추상화
컴퓨터 프로그래밍 언어의 종류
프로그래밍 언어의 발전사 2번째장
로고프로그래밍의 안내적교수전략, 자폐아의 사회성발달교수전략, 자폐아의 행동연쇄방해교수...
프로그래밍언어론 교재전범위 핵심요약노트
2012년 2학기 C++프로그래밍 기말시험 핵심체크
프로그래밍언어론_연습문제풀이(한빛미디어)
고급c프로그래밍 1장 2장
2014년 하계계절시험 C++프로그래밍 시험범위 핵심체크
2014년 2학기 C++프로그래밍 기말시험 핵심체크
2014년 2학기 프로그래밍언어론 기말시험 핵심체크
2014년 2학기 JSP프로그래밍 기말시험 핵심체크
2014년 2학기 프로그래밍언어론 교재 전 범위 핵심요약노트
2014년 2학기 JSP프로그래밍 교재 전 범위 핵심요약노트
소개글