import java.io.*;
import java.applet.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.font.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
class BingoTile extends Object
{
protected Rectangle2D bounds;
protected Point2D textOrigin;
protected int value;
protected boolean filled;
protected Font font;
public static Color fillColor;
public BingoTile(Rectangle2D r, Font f)
{
bounds = r;
value = 0;
font = f;
filled = false;
textOrigin = null;
}
public void paint(Graphics2D g2d)
{
if(textOrigin == null)
{
// 获得Graphics2D 容器的FontRenderContext
FontRenderContext frc = g2d.getFontRenderContext();
// 使用上面的FontRenderContext,获取消息和字体的布局
TextLayout layout = new TextLayout(""+value, font, frc);
// 得到布局的边界
Rectangle2D fontBounds = layout.getBounds();
textOrigin = new Point2D.Double(bounds.getX() + bounds.getWidth()/2 - fontBounds.getWidth()/2,
bounds.getY() + bounds.getHeight()/2 + fontBounds.getHeight()/2);
}
if(filled)
{
g2d.setPaint(fillColor);
}
else
{
g2d.setPaint(g2d.getBackground());
}
g2d.fill(bounds);
g2d.setPaint(Color.BLACK);
g2d.draw(bounds);
g2d.drawString(""+value, (int) textOrigin.getX(), (int) textOrigin.getY());
}
public void setValue(int n) { value = n; }
public int getValue() { return value; }
public boolean contains(Point2D p)
{
return bounds.contains(p);
}
public void reset()
{
filled = false;
textOrigin = null;
}
public void toggle()
{
filled = !filled;
}
}
class BingoGrid extends Object
{
public static final double TILE_WIDTH = 50;
public static final double TILE_HEIGHT = 50;
protected Rectangle2D bounds;
protected BingoTile[][] tiles;
protected BingoTile dirty;
public BingoGrid(Point2D upperLeft, Font font, Color fillColor)
{
bounds = new Rectangle2D.Double(upperLeft.getX(), upperLeft.getY(), 5*TILE_WIDTH, 5*TILE_HEIGHT);
BingoTile.fillColor = fillColor;
dirty = null;
tiles = new BingoTile[5][5];
double x = 0;
double y = bounds.getY();
Random random = new Random();
for(int i = 0; i < 5; i++)
{
x = bounds.getX();
for(int j = 0; j < 5; j++)
{
tiles[i][j] = new BingoTile(new Rectangle2D.Double(x, y, TILE_WIDTH, TILE_HEIGHT),
font);
x += TILE_WIDTH;
}
y += TILE_HEIGHT;
}
int value = 0;
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
boolean unique = false;
while(!unique)
{
unique = true;
value = 1+i*15+random.nextInt(15);
for(int k = 0; k < 5; k++)
{
if(tiles[k][i].getValue() == value)
{
unique = false;
}
}
}
//System.out.println("Setting " + j + " " + i);
tiles[j][i].setValue(value);
}
}
}
public Rectangle2D getBounds() { return bounds; }
public boolean contains(Point2D p)
{
if(! bounds.contains(p)) return false;
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
if(tiles[i][j].contains(p))
{
tiles[i][j].toggle();
dirty = tiles[i][j];
return true;
}
}
}
return false;
}
public void paintAll(Graphics2D g2d, Font font)
{
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
tiles[i][j].paint(g2d);
}
}
}
public void reset()
{
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
tiles[i][j].reset();
}
}
int value = 0;
Random random = new Random();
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
boolean unique = false;
while(!unique)
{
unique = true;
value = 1+i*15+random.nextInt(15);
for(int k = 0; k < 5; k++)
{
if(tiles[k][i].getValue() == value)
{
unique = false;
}
}
}
tiles[j][i].setValue(value);
}
}
}
public void updateDirty(Graphics2D g2d)
{
if(dirty != null)
{
dirty.paint(g2d);
dirty = null;
}
}
}
public class BingoClient extends Applet implements ActionListener, MouseListener
{
protected MulticastConnection client;
protected Font font;
protected Font calledFont;
protected BingoGrid grid;
protected String currCall;
protected String[] calledNumbers;
protected final String BINGO = "BINGO";
protected Button bingo;
public void init()
{
font = new Font("Helvetica", Font.PLAIN, 30);
calledFont = new Font("Helvetica", Font.PLAIN, 16);
grid = new BingoGrid(new Point2D.Double(50, 50), font, Color.ORANGE);
addMouseListener(this);
calledNumbers = new String[5];
for(int i = 0; i < 5; i++)
{
calledNumbers
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Java2游戏编程_随书源代码 (811个子文件)
.#HELLOWORLD.JAVA.1.3 195B
SALVATION.AU 12KB
SALVATION.AU 12KB
SALVATION.AU 12KB
SALVATION.AU 12KB
RETURN.AU 6KB
RETURN.AU 6KB
SHUFFLE.AU 5KB
SHUFFLE.AU 5KB
SHUFFLE.AU 5KB
SHUFFLE.AU 5KB
SQUISH.AU 2KB
SQUISH.AU 2KB
BONG.AU 2KB
BONG.AU 2KB
POP.AU 956B
POP.AU 956B
POP.AU 956B
POP.AU 956B
PING.AU 645B
PING.AU 645B
FLIP.AU 306B
FLIP.AU 306B
ACTORTEST.BAT 272B
CHARACTERBUILDER.BAT 202B
RADIOBUTTONTEST.BAT 163B
TREETEST.BAT 150B
BUTTONTEST.BAT 148B
ISOTEST.BAT 145B
BUFFEREDGRAPHICSTEST.BAT 139B
LABELTEST.BAT 132B
WRAPTEST.BAT 128B
VECTORTEST.BAT 124B
GUICLIENT.BAT 123B
SCENESCROLLTEST.BAT 123B
TCPTEST.BAT 117B
PANELTEST.BAT 115B
GUISERVER.BAT 114B
FONTMAPTEST.BAT 112B
FONTMAPTEST.BAT 112B
TEST.BAT 112B
MENUTEST.BAT 112B
VECTORTEST.BAT 111B
VOLATILEIMAGETEST.BAT 111B
TRACKERERRORTEST.BAT 109B
MAKEJAR.BAT 109B
BOUNDEDIMAGETEST.BAT 109B
AUDIOCHOICETEST.BAT 107B
FONTBOUNDSTEST.BAT 105B
FULLSCREENTEST.BAT 105B
FRAMERATETEST.BAT 103B
OFFSCREENTEST.BAT 103B
ATTRIBUTETEST.BAT 103B
COLLISIONTEST.BAT 103B
CHECKBOXTEST.BAT 101B
CONVERT.BAT 100B
CARDTEST.BAT 100B
TRACKERTEST.BAT 99B
MAKEJAR.BAT 99B
CHOICETEST.BAT 97B
BUTTONTEST.BAT 97B
MANYSHAPES.BAT 97B
NODEZ.BAT 96B
CHATSERVER.BAT 96B
SERVER.BAT 96B
PRIMEFACTORSTEST.BAT 96B
CHECKERBOARDTEST.BAT 96B
PANELTEST.BAT 95B
MOUSETEST.BAT 95B
GUICLIENT.BAT 94B
HASHTEST.BAT 93B
CARDTEST.BAT 93B
GRIDTEST.BAT 93B
SCRIBBLE.BAT 93B
CLIPTEST.BAT 93B
BLURTEST.BAT 93B
AREATEST.BAT 93B
FONTTEST.BAT 93B
RANDOMEXERCISE.BAT 92B
KEYTEST.BAT 91B
COINTOSSTEST.BAT 88B
NAMESORTTEST.BAT 88B
BINGOSERVER.BAT 86B
FONTLISTING.BAT 86B
THREADTEST.BAT 84B
VECTORTEST.BAT 84B
HELLOWORLD.BAT 84B
BINGOCLIENT.BAT 84B
BREAKTEST.BAT 82B
SHAPETEST.BAT 82B
GAMEOVER.BAT 80B
LOOPTEST.BAT 80B
SORTTEST.BAT 80B
PASCAL.BAT 76B
IDTEST.BAT 76B
GAMEPADIMPL.BSC 73KB
GAMEPADIMP.C 900B
GAMEPADIMPL.C 900B
NODEZ.CLASS 8KB
ACTOR2D.CLASS 7KB
共 811 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
- 心空无殇2015-01-17跟书是配套的,谢谢提供!
- suckbb2014-02-24很好的学习资源
RJGCzhu
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功