Qbasicnews.com

Full Version: Pasco's grass snippet... IN JAVA!
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Woo! I've learned absolutely NOTHING from my Java class (already 9 weeks into it) but after 10 minutes of studying some other guy's code, I came up with this program.

First, the original QBASIC by Pasco (found on QBOA)
Code:
DEFINT A-Z
TYPE grasspoint
x AS INTEGER
y AS INTEGER
angle AS INTEGER
END TYPE

RANDOMIZE TIMER

ngrass = 1000
DIM SHARED grass(ngrass) AS grasspoint
DIM SHARED presin(360) AS INTEGER

FOR lp = 0 TO ngrass
grass(lp).x = RND * 320
grass(lp).y = RND * 200
grass(lp).angle = (grass(lp).x MOD 360) + RND * 30 - ((200 - grass(lp).y) ^ .5) * 10
NEXT
FOR lp = 0 TO 360
presin(lp) = SIN(lp * 3.14159 / 180) * 128
NEXT
SCREEN 7
PALETTE 0, 4
OUT &H3C8, 4
OUT &H3C9, 0
OUT &H3C9, 23
OUT &H3C9, 0
PALETTE 1, 1
OUT &H3C8, 1
OUT &H3C9, 0
OUT &H3C9, 16
OUT &H3C9, 0
DO
SCREEN 7, , d, (d + 2) MOD 4
CLS
d = (d + 1) MOD 4
FOR lp = 0 TO ngrass
grass(lp).angle = (grass(lp).angle + 350) MOD 360
LINE (grass(lp).x, grass(lp).y)-(grass(lp).x + ABS(presin(grass(lp).angle)) \ 60 + 1, grass(lp).y + 1 + ABS(presin(grass(lp).angle)) \ 60), 1
NEXT
FOR lp = 0 TO ngrass
LINE (grass(lp).x, grass(lp).y)-(grass(lp).x + ABS(presin(grass(lp).angle)) \ 60, grass(lp).y - 2 + ABS(presin(grass(lp).angle)) \ 100), 2
NEXT
LOOP UNTIL INKEY$ <> ""

and now my code, which uses double buffering and whatnot
Code:
import java.awt.*;
import java.awt.image.*;
import java.applet.Applet;
import java.util.Random;

public class grass extends Applet implements Runnable
{
    int ngrass = 1000;
    int [] grassx = new int[ngrass];
    int [] grassy = new int[ngrass];
    int [] grassa = new int[ngrass];
    int [] presin = new int[361];
      Image imgbuffer = null;
    Graphics gbuffer = null;
    Random rnd = new Random();
    Thread app = null;

    public void start()
    {
        if( app == null )
        {
            app = new Thread(this);
            app.start();             //  This invokes run() (see below)
        }
    }

    public void init()
    {
        setBackground(new Color(0,64,0));
        imgbuffer = createImage(320, 200);
        gbuffer = imgbuffer.getGraphics();
        gbuffer.setColor( new Color(0,64,0) );
          gbuffer.fillRect(0, 0, 320, 200);

        for (int k = 0; k<ngrass; k++)
        {
            grassx[k] = rnd.nextInt(320);
            grassy[k] = rnd.nextInt(200);
            grassa[k] = (int)((grassx[k] % 360) + rnd.nextInt(30) - (Math.sqrt(200-grassy[k]))*10);
        }
        for (int k = 0; k<= 360; k++){
            presin[k] = (int)(Math.sin(k*Math.PI/180) * 128);
        }
    }
    public void paint(Graphics screen)
    {
        if (imgbuffer != null){
            screen.drawImage(imgbuffer, 0, 0, this);
        }
    }
    
    public void update(Graphics g)
    {
        paint(g);
    }

    public void run()
    {
        Graphics g = getGraphics();
        while (app != null)
        {
            eraseApp();
            paintApp(g);
            try
              {
                  Thread.sleep(10);    
              }catch(InterruptedException e) { stop(); }

        }
    }

    public void stop()
    {
        app = null;
    }

    public void paintApp(Graphics g)
    {
        gbuffer.setColor(Color.black);
        for (int k = 0; k<ngrass; k++){
            grassa[k] = (grassa[k] + 350) % 360;
            gbuffer.drawLine(grassx[k], grassy[k], grassx[k] + Math.abs(presin[grassa[k]]) / 60 + 1, grassy[k] + 1 + Math.abs(presin[grassa[k]]) / 60);
        }
        gbuffer.setColor(Color.green);
        for (int k = 0; k<ngrass; k++){
            gbuffer.drawLine(grassx[k], grassy[k], grassx[k] + Math.abs(presin[grassa[k]]) / 60, grassy[k] - 2 + Math.abs(presin[grassa[k]]) / 100);
        }
        g.drawImage(imgbuffer, 0, 0, this);
    }

    public void eraseApp()
    {
        gbuffer.setColor(new Color(0,64,0));
        gbuffer.fillRect(0,0,320,200);
    }
}

See the working applet here: http://www.venosoft.com/ninkazu/grass.html
it's not working for me. it says 'load: class grass not found'
so i should download that 9mb thing? ok...
A gray rectangle? What's wrong?
eeeeeeeeeeeeenaaaaaaaaaaaaaaable jaaaaaaaaaaaaaaaaaaaaaaaaaavaaaaaaaaaaaaaaaaa
iiiiiiiiiiiiii haaaaaaaaaveeeeeeeeeee iiiiiiiiiiiiiiiiittttttttttt eeeeeeeeeeennnnnnnnnaaaaabbbbbbbllllleeeeeeeeddddddd
Are you quite sure? It works fine on my computer and others whom I've shown it to.

Oh Jark, I did your Mdb4.bas too http://www.venosoft.com/ninkazu/mandel.html

Jeez, Java is easy and has quick results. Wait, what am I saying? JAVA SUCKS!
Yeah, lots of Java stuff doesn't work on my computer, either, 'cuz I deleted some registry stuff.

Anyways, I doubt someone who didn't use spaces would approve of your rampant tabbing, Ninkazu..
...

...

works for me...
Pages: 1 2