While we have not a solution for this bug, there’s a workaround to play zsnes with sount in Ubuntu Hardy Heron (aka Ubuntu 8.04).
zsnes -ad sdl romname
While we have not a solution for this bug, there’s a workaround to play zsnes with sount in Ubuntu Hardy Heron (aka Ubuntu 8.04).
zsnes -ad sdl romname
Tilesets are a common technique in game development to create all kinds of tile-based games (from strategy to RPG games).
Here’s a example of simple 2D isometric square tilesets. I decided to use 32×32 pixels tiles and store 10 tiles per row in a single image:
I created a class called public class JGameCanvas that extends from JPanel from swing:
package game;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;
enum Tile {
GRASS, GRASS_STONE, GRASS_BAGS, T3, T4, T5, T6, T7, T8, T9,
TREE, TREE_CHOMP, TREE_DEAD, T13, T14, T15, T16, T17, T18, T19,
ROAD_H, ROAD_V, ROAD_HV_DOWN, ROAD_HV_UP, ROAD_VH_RIGHT, ROAD_VH_LEFT, ROAD_CROSS, T27, T28, T29,
WALL, WALL_POSTER, WALL_END_RIGHT, WALL_END_LEFT, T34, T35, T36, T37, T38, T39,
T40, T41, T42, T43, T44, T45, T46, T47, T48, T49,
NEWS, T51, RES_1, RES_2, BUSS_1, BUSS_2, HOSP_1, HOSP_2, MARK_1, MARK_2,
PIZZ_1, PIZZ_2, RES_3, RES_4, BUSS_3, BUSS_4, HOSP_3, HOSP_4, MARK_3, MARK_4,
PIZZ_3, PIZZ_4, RES_5, RES_6, BUSS_5, BUSS_6, HOSP_5, HOSP_6, MARK_5, MARK_6
}
public class JGameCanvas extends JPanel{
private static final int tW = 32; // tile width
private static final int tH = 32; // tile height
private static final Tile map[][] =
{{Tile.TREE,Tile.TREE, Tile.TREE, Tile.ROAD_V, Tile.GRASS, Tile.TREE, Tile.TREE_DEAD, Tile.GRASS_STONE, Tile.TREE, Tile.TREE},
{Tile.WALL, Tile.WALL_POSTER, Tile.WALL_END_RIGHT , Tile.ROAD_V, Tile.WALL_END_LEFT, Tile.WALL, Tile.WALL_END_RIGHT, Tile.TREE_CHOMP, Tile.GRASS_STONE, Tile.GRASS_STONE},
{Tile.GRASS,Tile.GRASS, Tile.GRASS_STONE, Tile.ROAD_V, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS},
{Tile.PIZZ_1,Tile.PIZZ_2, Tile.GRASS, Tile.ROAD_V, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS},
{Tile.PIZZ_3,Tile.PIZZ_4, Tile.GRASS, Tile.ROAD_V, Tile.GRASS, Tile.GRASS, Tile.MARK_1, Tile.MARK_2, Tile.HOSP_1, Tile.HOSP_2},
{Tile.ROAD_H,Tile.ROAD_H, Tile.ROAD_H, Tile.ROAD_VH_LEFT, Tile.TREE, Tile.TREE_DEAD, Tile.MARK_3, Tile.MARK_4, Tile.HOSP_3, Tile.HOSP_4},
{Tile.GRASS,Tile.BUSS_1, Tile.BUSS_2, Tile.ROAD_V, Tile.TREE, Tile.NEWS, Tile.MARK_5, Tile.MARK_6, Tile.HOSP_5, Tile.HOSP_6},
{Tile.GRASS,Tile.BUSS_3, Tile.BUSS_4, Tile.ROAD_VH_RIGHT, Tile.ROAD_H, Tile.ROAD_H, Tile.ROAD_H, Tile.ROAD_H, Tile.ROAD_H, Tile.ROAD_H},
{Tile.GRASS,Tile.BUSS_5, Tile.BUSS_6, Tile.ROAD_V, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS},
{Tile.GRASS,Tile.GRASS, Tile.GRASS, Tile.ROAD_V, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS, Tile.GRASS}
};
private Image tileset;
public JGameCanvas() {
tileset = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("resources/tileset.png"));
}
@Override
protected void paintComponent(Graphics g) {
g.setColor(Color.black);
g.fillRect(0, 0, getWidth(), getHeight());
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
drawTile(g, map[j][i], i*tW,j*tH);
}
protected void drawTile(Graphics g, Tile t, int x, int y){
// map Tile from the tileset
int mx = t.ordinal()%10;
int my = t.ordinal()/10;
g.drawImage(tileset, x, y, x+tW, y+tH,
mx*tW, my*tH, mx*tW+tW, my*tH+tH, this);
}
}
Program running:
Those graphics I created for the game Batalhão and are under Creative Commons Attribution Share Alike 3.0 license. The source code is under GPL license, download the NetBeans project with sources: tileset.tar.bz2.
Those days Gregg Sporar, NetBeans enthusiast working at Sun Microsystems was here in Brazil and went to our city Fortaleza to speak in our NetBeans Day Fortaleza. We had only a couple of days to prepare everything but is always good work under such pressure. 🙂
Me and my friend (Cassiano Carvalho) could toke care of him. First we got Gregg at our international airport, Pinto Martins from a flight from Recife. After that we went to a typical food dinner at Coco Bambu where’s Gregg could taste our tapioca and figure why our local JUG (CEJUG) event is called Tapioca with Coffee.
After that we went to the hotel but we did not have realized that that day was the birthday of our city Fortaleza and the birthday party was a public concert at beach of one of most famous artist in Brazil, Roberto Carlos.
Roberto Carlos in the early years… 😛
For those who are not Brazilians, To have an idea what Roberto Carlos is, just imagine (in a smaller proportion of course) some kind of Brazilian Elvis Presley. When we quited the restaurant the show was just finished, we had a huge crowd walking back for everywhere, streets blocked, mess and traffic extremely slow. We spend about two hour on this. We decided to park the car, get Gregg’s luggage and go walking the hotel. Luckily the rain don’t caught us.
In the morning was raining cats and dogs at Fortaleza, what is very uncommon.
I picked Gregg at the hotel to the campus so we can meet the NPD (acronym in Portuguese for Data Processing Core) building, the Internet backbone of the entire state and where some projects are using NetBeans. Gregg also met our CS department, our labs and our cluster.
While that we prepared the auditorium and some last details, test microphones and projector.
People started to get and we got their names and mails for event certifications. I opened the event talking about NetBeans, CEJUG projects and opportunities for the students.
People from TV Software Livre (Free Software Television) was there too to record and transmit the event.
The first Gregg’s talk was about NetBeans and some new features from the last version of NetBeans and some new features for the version 6.1.
The second was about Memory Leaks in Java and a method for detecting those. Very interesting.
After Gregg quited to fly to Brasilia I did a presentation on NetBeans 6 and 6.1 Beta news features. You can download Gregg’s slides here and here, my slides here.The recorded video is hosted at Google Video. You can see more photos in this album:
Gregg, thank you very much and hope you liked your quick visit to Fortaleza. 😉 Thanks also CEJUG and all guys that made this event possible.
You should know that variable values are cyclic in Java.
public class Test{
public static void main(String args[]){
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
int x = Integer.MAX_VALUE + 1;
System.out.println(x);
}
}
This produces:
2147483647
-2147483648
-2147483648
Gregg Sporar, evangelista do Netbeans pela Sun Microsystems, estará essa segunda-feira (14/Abril/2008) em Fortaleza para participar do NetBeans Day Fortaleza.
O evento será essa segunda-feira a partir das 13 horas no auditório da Pró-Reitoria de Graduação, no prédio da Biblioteca Central no Campus do Pici. Dê uma olhada no mapa. Os assentos são limitados, chegue cedo e garanta seu lugar.
No NetBeans Day eu também vou fazer uma apresentação mostrando a palestra que eu vou apresentar no FISL, Netbeans 6: indo além do Java na trilha de Ruby.
Em seguida ele partirá para BrasÃlia e depois para Porto Alegre onde ele apresentará sua palestra no FISL intitulada Memory Leaks in Java Applications – Different Tools for Different Types of Leaks.
Espero vocês lá!
E esse sábado tem o nosso tradicional Café com Tapioca, não esqueçam de ir!
Nós fizemos. Agora temos a placa de formatura mais legal de todos os tempos bem aqui no nosso departamento de Computação. 🙂 A placa de formatura do tux!
Eu ouvi rumores que a próxima turma vai fazer uma placa com algum outro mascote de Software Livre. 😀