Avatar billede rosgaard Nybegynder
02. maj 2003 - 10:20 Der er 18 kommentarer og
1 løsning

Forklaringer af en kode...

Heysa, jeg ville høre om der var nogle der har tid til at beskrive hele min kode i java om til normale ord, hva er det der sker osv ... Jeg har ikke tid til selv at gøre det, så det hjælper ikke så meget med links til hvor jeg kan få hjælp...
På forhånd tak...
Hilsen Rosgaard


Her kommer den:


import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane; 
public class ticc extends Applet
    implements MouseListener, ActionListener
{
    public ticc()
    {
        nn = 0;
        state = new int[9];
        p = new Point[9];
        b = new Button("Nyt spil");
        addMouseListener(this);
        player1 = 0;
        player2 = 0;
        draw = 0;
    }
    public void init()
    {
        for(int i = 0; i < state.length; i++)
            p[i] = new Point(50 + (i / 3) * 60, (i % 3) * 60 + 50);
        for(int j = 0; j < state.length; j++)
            state[j] = 0;
        b.addActionListener(this);
        add(b);
    }
    public void paint(Graphics g)
    {
        g.drawLine(20, 140, 200, 140);
        g.drawLine(20, 80, 200, 80);
        g.drawLine(140, 20, 140, 200);
        g.drawLine(80, 20, 80, 200);
        for(int i = 0; i < 9; i++)
            switch(state[i])
            {
            case 1: // '\001'
                g.setColor(Color.black);
                g.drawLine(p[i].x - 20, p[i].y - 20, p[i].x + 20, p[i].y + 20);
                g.drawLine(p[i].x + 20, p[i].y - 20, p[i].x - 20, p[i].y + 20);
                break;
            case 2: // '\002'
                g.setColor(Color.white);
                g.drawOval(p[i].x - 25, p[i].y - 25, 50, 50);
                break;
            }
        if(hasWon(1))
        {
            showMessage("Spiller 1 har vundet!");
            player1++;
        } else
        if(hasWon(2))
        {
            showMessage("Spiller 2 har vundet!");
            player2++;
        } else
        if(uafgjort())
        {
            showMessage("Spillet endte uafgjort!");
            draw++;
        }
        g.setColor(Color.black);
        g.drawString("Statistik:", 0, 225);
        g.drawString("Player1:    " + player1, 0, 245);
        g.drawString("Player2:    " + player2, 0, 265);
        g.drawString("Uafgjorte: " + draw, 0, 285);
    }
    public void mousePressed(MouseEvent mouseevent)
    {
        Point point = mouseevent.getPoint();
        for(int i = 0; i < state.length; i++)
            if(point.distance(p[i]) < 20D && state[i] == 0)
            {
                state[i] = nn % 2 + 1;
                nn++;
            }
        repaint();
    }
    public void actionPerformed(ActionEvent actionevent)
    {
        if(actionevent.getSource() == b)
            reset();
    }
    private void reset()
    {
        for(int i = 0; i < state.length; i++)
            state[i] = 0;
        repaint();
    }
    private boolean hasWon(int i)
    {
        return state[0] == i && state[3] == i && state[6] == i || state[1] == i && state[4] == i && state[7] == i || state[2] == i && state[5] == i && state[8] == i || state[0] == i && state[1] == i && state[2] == i || state[3] == i && state[4] == i && state[5] == i || state[6] == i && state[7] == i && state[8] == i || state[0] == i && state[4] == i && state[8] == i || state[2] == i && state[4] == i && state[6] == i;
    }
    private boolean uafgjort()
    {
        boolean flag = true;
        for(int i = 0; i < state.length; i++)
        {
            if(state[i] != 0)
                continue;
            flag = false;
            break;
        }
        return flag;
    }
    private void showMessage(String s)
    {
        JOptionPane.showMessageDialog(this, s, "F\346rdig", 1);
        reset();
    }
    public void mouseReleased(MouseEvent mouseevent)
    {
    }
    public void mouseClicked(MouseEvent mouseevent)
    {
    }
    public void mouseEntered(MouseEvent mouseevent)
    {
    }
    public void mouseExited(MouseEvent mouseevent)
    {
    }
    private int nn;
    private int state[];
    private Point p[];
    private Button b;
    private int player1;
    private int player2;
    private int draw;
}
Avatar billede arne_v Ekspert
02. maj 2003 - 10:22 #1
Hvad mener du med ikke tid ?

Der burde da kunne dokumenteres pænt på 10 minutter !
Avatar billede arne_v Ekspert
02. maj 2003 - 10:30 #2
Skriv noget ved spørgsmålstegene og sæt nogen kommentarer ind
de vigtige steder i koden og så burde koden være dokumenteret:

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class ticc extends Applet
        implements MouseListener, ActionListener
{
    /**
    * Construct object and initialize member variabels.
    */
    public ticc()
    {
        nn = 0;
        state = new int[9];
        p = new Point[9];
        b = new Button("Nyt spil");
        addMouseListener(this);
        player1 = 0;
        player2 = 0;
        draw = 0;
    }

    /**
    * Special applet initialzation metode.
    */
    public void init()
    {
        for(int i = 0; i < state.length; i++)
            p[i] = new Point(50 + (i / 3) * 60, (i % 3) * 60 + 50);
        for(int j = 0; j < state.length; j++)
            state[j] = 0;
        b.addActionListener(this);
        add(b);
    }

    /**
    * Method calleed whenever screen need to be painted.
    * @param g graphical context
    */
    public void paint(Graphics g)
    {
        g.drawLine(20, 140, 200, 140);
        g.drawLine(20, 80, 200, 80);
        g.drawLine(140, 20, 140, 200);
        g.drawLine(80, 20, 80, 200);
        for(int i = 0; i < 9; i++)
            switch(state[i])
        {
            case 1: // '\001'
                g.setColor(Color.black);
                g.drawLine(p[i].x - 20, p[i].y - 20, p[i].x + 20, p[i].y + 20);
                g.drawLine(p[i].x + 20, p[i].y - 20, p[i].x - 20, p[i].y + 20);
                break;
            case 2: // '\002'
                g.setColor(Color.white);
                g.drawOval(p[i].x - 25, p[i].y - 25, 50, 50);
                break;
        }
        if(hasWon(1))
        {
            showMessage("Spiller 1 har vundet!");
            player1++;
        } else
            if(hasWon(2))
            {
                showMessage("Spiller 2 har vundet!");
                player2++;
            } else
                if(uafgjort())
                {
                    showMessage("Spillet endte uafgjort!");
                    draw++;
                }
                g.setColor(Color.black);
                g.drawString("Statistik:", 0, 225);
                g.drawString("Player1:    " + player1, 0, 245);
                g.drawString("Player2:    " + player2, 0, 265);
                g.drawString("Uafgjorte: " + draw, 0, 285);
    }

    /**
    * Eventhandler called whenever mopuse is pressed
    * @param mouseevent
    */
    public void mousePressed(MouseEvent mouseevent)
    {
        Point point = mouseevent.getPoint();
        for(int i = 0; i < state.length; i++)
            if(point.distance(p[i]) < 20D && state[i] == 0)
            {
            state[i] = nn % 2 + 1;
            nn++;
        }
        repaint();
    }

    /**
    * Eventhandler called whenever button is pressed.
    * @param actionevent
    */
    public void actionPerformed(ActionEvent actionevent)
    {
        if(actionevent.getSource() == b)
            reset();
    }

    /*
    * Reset board to start again.
    */
    private void reset()
    {
        for(int i = 0; i < state.length; i++)
            state[i] = 0;
        repaint();
    }

    /*
    * Check if player has won.
    * @return true/false
    */
    private boolean hasWon(int i)
    {
        return state[0] == i && state[3] == i && state[6] == i || state[1] == i && state[4] == i && state[7] == i || state[2] == i && state[5] == i && state[8] == i || state[0] == i && state[1] == i && state[2] == i || state[3] == i && state[4] == i && state[5] == i || state[6] == i && state[7] == i && state[8] == i || state[0] == i && state[4] == i && state[8] == i || state[2] == i && state[4] == i && state[6] == i;
    }

    /*
    * Check if draw.
    * @return true/false
    */
    private boolean uafgjort()
    {
        boolean flag = true;
        for(int i = 0; i < state.length; i++)
        {
            if(state[i] != 0)
                continue;
            flag = false;
            break;
        }
        return flag;
    }

    /*
    * Display message.
    * @param s message to display
    */
    private void showMessage(String s)
    {
        JOptionPane.showMessageDialog(this, s, "F\346rdig", 1);
        reset();
    }

    /**
    * Unused evenethandler.
    * @param mouseevent
    */
    public void mouseReleased(MouseEvent mouseevent)
    {
    }

    /**
    * Unused evenethandler.
    * @param mouseevent
    */
    public void mouseClicked(MouseEvent mouseevent)
    {
    }

    /**
    * Unused evenethandler.
    * @param mouseevent
    */
    public void mouseEntered(MouseEvent mouseevent)
    {
    }

    /**
    * Unused evenethandler.
    * @param mouseevent
    */
    public void mouseExited(MouseEvent mouseevent)
    {
    }

    /* ? */
    private int nn;

    /* ? */
    private int state[];

    /* ? */
    private Point p[];

    /* ? */
    private Button b;

    /* ? */
    private int player1;

    /* ? */
    private int player2;

    /* ? */
    private int draw;
}
Avatar billede rosgaard Nybegynder
02. maj 2003 - 10:32 #3
måske kan du .. men jeg sidder og er i gang med en anden aflevering og ved at det vil tage mig meget tid at få forkleret det ...
Avatar billede rosgaard Nybegynder
02. maj 2003 - 10:33 #4
men tak .. kigger på det senere
Avatar billede arne_v Ekspert
02. maj 2003 - 10:36 #5
Et lille eksempel på kommentering af en metode:

    public void init()
    {
        // place all 9 points where marks can be made
        for(int i = 0; i < state.length; i++)
            p[i] = new Point(50 + (i / 3) * 60, (i % 3) * 60 + 50);
        // set all 9 positions to empty
        for(int j = 0; j < state.length; j++)
            state[j] = 0;
        // add action listener to handle click on "Nyt spil" button
        b.addActionListener(this);
        // add button to GUI
        add(b);
    }
Avatar billede rosgaard Nybegynder
02. maj 2003 - 10:37 #6
har du et program til det siden du forklare det på engelsk ??
Avatar billede arne_v Ekspert
02. maj 2003 - 10:37 #7
Eksempel på kommentering af variabel:

    /* Content of place: 0=emmpty, 1=player 1 mark, 2=player 2 mark */
    private int state[];
Avatar billede arne_v Ekspert
02. maj 2003 - 10:38 #8
Nej - undskyld. Det er bare en vane at jeg altid skriver kommentarer
på engelsk.
Avatar billede arne_v Ekspert
02. maj 2003 - 10:41 #9
Jeg vil gerne hjælpe med information om hvordan man skriver kommentarer.

Jeg vil også gerne hjælpe med en kgod forklaring, hvis der er
noget tricky.

Men jeg vil ikke "lave det hele".

Fordi så lærer du ikke noget af det.
Avatar billede rosgaard Nybegynder
02. maj 2003 - 10:44 #10
hehe... Ku da ellers ha været nice ..
Avatar billede rosgaard Nybegynder
02. maj 2003 - 10:45 #11
har du tid senere ... Så må jeg lige skynde mig med det andet jeg sidder og laver ...
Avatar billede arne_v Ekspert
02. maj 2003 - 10:50 #12
Jeg vil læse Eksperten flere gang i løbet af idag og i aften.
Avatar billede disky Nybegynder
02. maj 2003 - 11:14 #13
rosgaard:
Hvis du så sætter kommentarerne efter linien de passer til, altså i forlængelse af linien, gavner det overskueligheden meget.
Avatar billede ravn1 Nybegynder
02. maj 2003 - 11:14 #14
arne_v har du messenger eller noget hvor du har lyst til at hjælpe mig ?? jeg har nogle spørgsmål til et lignende aplett?
Avatar billede arne_v Ekspert
02. maj 2003 - 11:21 #15
Nej.

Jeg er så gammel at jeg ikke bruger MSN, ICQ eller
lignende. Kun email.

Og som sagt er jeg mere indstillet på at hjælpe med hvordan det
skal gøres end at lave det.

Ellers lærer I jo ikke noget af det.
Avatar billede rosgaard Nybegynder
02. maj 2003 - 14:11 #16
har du en mail så ?
Avatar billede arne_v Ekspert
02. maj 2003 - 14:15 #17
arne_v@mail.danbbs.dk

[men den bliver først læse hyppigt efter kl. 5]
Avatar billede rosgaard Nybegynder
02. maj 2003 - 21:52 #18
hmm
Avatar billede arne_v Ekspert
02. maj 2003 - 21:55 #19
Jeg har ikke modtaget nogen email - fandt du ud af det eller ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester