home games dev
Lewpen.com»Research & Development»Animation»Java Effects»Fog»Checkered effect

Checkered effect

/ Site3D.java

import java.awt.image.*;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Event;
import java.awt.Image;
import java.awt.Font;
import java.util.Vector;  //  http://java.sun.com/products/jdk/1.1/docs/api/java.util.Vector.html




//---- MAIN CLASS ------------------------------------------------------------//

public class Site3D extends tinyptc
{
  //---- DATA
  
  //- Output buffer

  int size;

  int[] buf;
  int[] tex;

  int mouse_x = 0, mouse_y = 0;
  boolean mouse_click = false;



  //---- rand
  
  //  Lewpen's random number algorithm - Creates random real numbers within a given range

  int rand_1 = 0x87361872, rand_2 = 0x12487, rand_3 = 0x8129743;

  public double rand(double min, double max)
  {
    rand_1 += rand_2^rand_3;  //  Lewpen's algo
    rand_2 ^= rand_3*rand_1;
    rand_3 *= rand_1+rand_2;
    
    rand_1 = (rand_1 << 2) | (rand_1 >> 30);  //  Rotate seeds by different ammounts
    rand_2 = (rand_2 << 7) | (rand_2 >> 25);
    rand_3 = (rand_3 << 9) | (rand_3 >> 23);

    rand_1 += 0x15214391;  //  Randomize the bits somewhat
    rand_2 += 0xF2248365;
    rand_3 += 0x42C427AA;

    //  Create random number 0..1234566;
    
    int r = ((rand_1+rand_2+rand_3)/3) % 1234567;

    //  Scale to the range [min..max)

    return min + (max-min)*(r+0.0) / 1234567.0;
  }



  //---- makeNoise
  
  public int[] makeNoise()
  {
    int[] tex = new int[256*256];
    
    int i, j;
    
    for(j=0; j<256; j++)
      for(i=0; i<256; i++)
        tex[j*256+i] = ((i^j)>>7)*51;

    return tex;
  }



  //---- main
  
  //  Main loop

  public void main(int width, int height)
  {
    size = width * height;
    buf = new int[size];

    int i, j, k;

    //- Make smoke texture
    
    tex = makeNoise();

    double px=0, py=0, pz=0;

    double x, y, z, scale, oscale;

    int ox, oy;
        
    //- Anim loop

    while(true)
    {
      //- Move
      
      if(mouse_click)
      {
        pz += 0.1;
        pz -= (int)pz;
      }
      
      //- Render
      
      for(i=0; i<size; i++) buf[i] = 0;

      for(k=0; k<=4; k++)
      {
        z = 2.0 + 0.2*(k-pz);

        scale = 1.0 / z;

        oscale = 1.0 / scale;

        ox = -mouse_x;//(int)(-0.125*width*oscale);
        oy = -mouse_y;//(int)(-0.125*height*oscale);

        for(j=0; j<height; j++)
        {
          for(i=0; i<width; i++)
          {
            int c = tex[(((int)(oscale*(double)(oy+j)))&255)*256+(((int)(oscale*(double)(ox+i)))&255)];
            
            buf[j*width+i] += c*0x01010101;
          }
        }
      
      }

      update(buf);
    }
  }


  //---- mouseMove

  public boolean mouseMove(Event e, int x, int y)
  {
    mouse_x = x;
    mouse_y = y;
    return true;
  }



  //---- mouseDrag

  public boolean mouseDrag(Event e, int x, int y)
  {
    mouse_x = x;
    mouse_y = y;
    return true;
  }



  //---- mouseDown

  public boolean mouseDown(Event e, int x, int y)
  {
    mouse_click = true;
    return true;
  }



  //---- mouseUp

  public boolean mouseUp(Event e, int x, int y)
  {
    mouse_click = false;
    return true;
  }


}



//---- end of code -----------------------------------------------------------//

Comments

Sponsored Links

Toys & Games:

Doggie Doo
Nerf Vortex
Monster High
Lagoona Hydration Station
Milky Bunny
Moshling Tree House
Lego Ninja Go Fire Temple
Fireman Sam Pontypandy Rescue
Rock Elmo
Star Wars Ultimate Force Lightsaber

Games

The Dodge Game
Flatspace

2-Player Games:

Quake 2D
Meteora

Puzzle Games:

Mini Tetris
Sudoku Solver

Development

3D Graphics:

3D Graphics Articles
WebGL Examples
Flash 3D Engine
Java 3D Engine

Development:

Programming Articles
Animation Demos
Game Development Examples

Links

iBuddy Social Network
Local Legends Football
PHP Charts & Graphs
CubeLogix Studios