Перейти к содержанию

Закрыть


Рекомендуемые сообщения

пишу курсовую, по Jave сильно не шарю

нужно сделать описание классов и методов


| Author: Kong-Kat Wong ([email protected]) |
\* Date 1-19-1996 */

//be bear with my codes, considering it's my first Java applet!

import java.awt.*;
import java.applet.*;
import java.util.*;

public class Tower extends Applet {
TowerPanel panel;
TowerControl control;

public void init() {
resize(500,450);
setLayout(new BorderLayout());

panel = new TowerPanel();
add("Center", panel);
add("South", control = new TowerControl(panel));
}

public void start() {
panel.start();
}

public void stop() {
panel.stop();
}
public boolean action(Event evt, Object arg) {
if (arg instanceof Boolean) {
if (((Checkbox)evt.target).getLabel().equals("Reset")) {
panel.reset = ((Boolean)arg).booleanValue();
} else {
panel.reset = ((Boolean)arg).booleanValue();
}
return true;
}
return false;
}
}

class Towering {
int num_rings[] = new int[3];
int top_size[] = new int[3];

public Towering(int a){
num_rings[0] = a;
num_rings[1] = 0;
num_rings[2] = 0;
top_size[0] = 40;
top_size[1] = 1000;
top_size[2] = 1000;
}

public void reset(int B){
num_rings[0] = b;
num_rings[1] = 0;
num_rings[2] = 0;
top_size[0] = 40;
top_size[1] = 1000;
top_size[2] = 1000;
}

}

class ring {
int ring_size[] = new int[10];
int old_x[] = new int[10];
int which_x[] = new int[10];
int which_y[] = new int[10];
int order[] = new int[10];
int which_tower[] = new int[10];

public ring(int a){
for(int i = 0; i ring_size[i] = 40+20*i;
which_x[i] = 100;
old_x[i] = which_x[i];
which_y[i] = 400-30*(a-i);
order[i] = a-i;
which_tower[i] = 0;
}
}

public void reset(int B){
for(int i = 0; i ring_size[i] = 40+20*i;
which_x[i] = 100;
old_x[i] = which_x[i];
which_y[i] = 400-30*(b-i);
order[i] = b-i;
which_tower[i] = 0;
}
}
}

class TowerPanel extends Panel implements Runnable{
Thread going = null;
int width = 500;
int height = 400;
int tower_height = 350;
int tower_width = 20;
int num_rings = 8;
int pick_ring = 1000;
int tempx;
int tempy;
boolean win = false;
boolean reset;

//special effect words
String s = new String("Tower of Hanoi");
char separated[];
int x_coord = 0, y_coord = 0;

Towering towers = new Towering(num_rings);
ring rings = new ring(num_rings);

TowerPanel(){
setFont(new Font("TimesRoman",Font.BOLD,40));
setBackground(new Color(170,170,170));
separated = new char [s.length()];
s.getChars(0,s.length(),separated,0);
}

public void paint(Graphics g) {
//special words
for(int i=0;i {
x_coord = (int) (Math.random()*10+15*i+100);
y_coord = (int) (Math.random()*10+36);
g.setColor(new Color(200-10*i, 10*i, 10*i));
g.drawChars(separated, i,1,x_coord,y_coord);
}

//drawing those three towers
g.setColor(Color.red);
g.fill3DRect(90,height-tower_height, tower_width, tower_height, true);
g.setColor(Color.blue);
g.fill3DRect(240,height-tower_height, tower_width, tower_height, true);
g.setColor(Color.yellow);
g.fill3DRect(390,height-tower_height, tower_width, tower_height, true);

//drawing all the rings
g.setColor(Color.black);
for(int j=0;j g.setColor(new Color(20*j+55,200-20*j,20*j+55));
g.fill3DRect(rings.which_x[j]-rings.ring_size[j]/2, rings.which_y[j], rings.ring_size[j], 30, true);
}

//Congratulation
if(win){
g.setColor(Color.white);
g.drawString("Congratulation!!!",150,150);
}

}

public synchronized boolean mouseDown(Event evt, int x, int y) {
for(int k=0; k if(rings.order[k] == towers.num_rings[rings.which_tower[k]]) {
if((x>=(rings.which_x[k]-rings.ring_size[k]/2))&&(x<=((rings.which_x[k]-rings.ring_size[k]/2)+rings.ring_size[k]))){
if((y>=rings.which_y[k])&&(y<=(rings.which_y[k]+30))){
pick_ring = k;
}}}}
return true;
}

public synchronized boolean mouseDrag(Event evt, int x, int y) {
if(pick_ring!=1000){
rings.which_x[pick_ring] = x;
rings.which_y[pick_ring] = y;
//repaint(1,x-40,y-40,rings.ring_size[pick_ring]*5,200);
repaint();
}
return true;
}

public synchronized boolean mouseUp(Event evt, int x, int y) {
if(pick_ring!=1000){
if((140>=rings.which_x[pick_ring])&&(100<=(rings.which_x[pick_ring]+rings.ring_size[pick_ring]))&&(rings.ring_size[pick_ring] ++towers.num_rings[0];
--towers.num_rings[rings.which_tower[pick_ring]];
rings.which_tower[pick_ring] = 0;
rings.which_x[pick_ring] = 100;
rings.order[pick_ring] = towers.num_rings[0];
rings.which_y[pick_ring] = 400-30*towers.num_rings[0];
}
else if((280>=rings.which_x[pick_ring])&&(240<=(rings.which_x[pick_ring]+rings.ring_size[pick_ring]))&&(rings.ring_size[pick_ring] ++towers.num_rings[1];
--towers.num_rings[rings.which_tower[pick_ring]];
rings.which_tower[pick_ring] = 1;
rings.which_x[pick_ring] = 250;
rings.order[pick_ring] = towers.num_rings[1];
rings.which_y[pick_ring] = 400-30*towers.num_rings[1];

}
else if((430>=rings.which_x[pick_ring])&&(390<=(rings.which_x[pick_ring]+rings.ring_size[pick_ring]))&&(rings.ring_size[pick_ring] ++towers.num_rings[2];
--towers.num_rings[rings.which_tower[pick_ring]];
rings.which_tower[pick_ring] = 2;
rings.which_x[pick_ring] = 400;
rings.order[pick_ring] = towers.num_rings[2];
rings.which_y[pick_ring] = 400-30*towers.num_rings[2];
}
else{
rings.which_x[pick_ring] = rings.old_x[pick_ring];
rings.which_y[pick_ring] = 400-30*towers.num_rings[rings.which_tower[pick_ring]];
}
}
rings.old_x[pick_ring] = rings.which_x[pick_ring];
pick_ring = 1000;

//recompute the to_size for all towers
for(int z=0;z if(rings.order[z] == towers.num_rings[rings.which_tower[z]]){
towers.top_size[rings.which_tower[z]] = rings.ring_size[z];
}
}

//see if the user wins
for(int t=0;t<3;++t){
if((t!=0)&&(towers.num_rings[t] == num_rings)){
win = true;
}
if(towers.num_rings[t] == 0){
towers.top_size[t] = 1000;
}
}
repaint();
return true;
}

public void start(){
if(going == null){
going = new Thread(this);
going.start();
}
}

public void stop() {
going = null;
}

/*
private Image offScreenImage;
private Dimension offScreenSize;
private Graphics offScreenGraphics;

public final synchronized void update (Graphics g){
Dimension d = size();
if((offScreenImage == null) || (d.width !=offScreenSize.width) || (d.height != offScreenSize.height)) {
offScreenImage = createImage(d.width, d.height);
offScreenSize = d;
offScreenGraphics = offScreenImage.getGraphics();
}
paint(offScreenGraphics);
g.drawImage(offScreenImage, 0, 0, null);
}

*/
public void run() {
while (going!=null) {
try {Thread.sleep(100);} catch (InterruptedException e){}
repaint(1,0,0,500,45);
//repaint();
}
going = null;
}

public void reset(boolean filled, int num_blocks) {
win = false;
num_rings = num_blocks;
towers.reset(num_rings);
rings.reset(num_rings);
repaint();
}
}

class TowerControl extends Panel {
TextField s;
TextField e;
TowerPanel pa;

public TowerControl(TowerPanel pa) {
this.pa = pa;
add(s = new TextField("8", 4));
add(new Button("Reset Blocks Number"));
}

public boolean action(Event ev, Object arg) {
if (ev.target instanceof Button) {
String label = (String)arg;

pa.reset(label.equals("Reset Blocks Number"),
Integer.parseInt(s.getText().trim()));

return true;
}

return false;
}
}
/*	Interactive Tower of Hanoi		        *\

Ссылка на комментарий

Forever

Ты отредактируй, немного, своё сообщение: Отключи, в этом сообщении, поддержку смайлов, а то в коде в некоторых местах, смайлы, вместо текста, отображаются.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...