没有标题写的那么大……真要用Java重写太阁五不说别的,光整理原图就够累死我的……

游戏截图:

只是一个太阁五中加农业水平小游戏的再现……用本人loonframework-game包进行图形处理,算是一个对jar包的测试程序,完整程序下载地址,仅将使用到的类和图形打包:

http://looframework.sourceforge.net/download/Tg.jar

源码如下:

TgIrrigationScript.java

package org.loon.framework.test.tg;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;

import javax.swing.JOptionPane;


import org.loon.framework.game.collection.SimpleArray;
import org.loon.framework.game.image.Bitmap;

/** */ /**
 * <p>
 * Title: LoonFramework
 * </p>
 * <p>
 * Description:[太阁立志传小游戏Java模拟之水渠贯通]loonframework-game包由于标准类及接口未完成暂不开源(我懒……目前只完成大约45%而已|||三月没动……)
 * </p>
 * <p>
 * Copyright: Copyright (c) 2007
 * </p>
 * <p>
 * Company: LoonFramework
 * </p>
 * 
 * @author chenpeng
 * @email:ceponline@yahoo.com.cn
 * @version 0.1
 */
public class TgIrrigationScript  extends Panel  implements KeyListener  ... {

    /** *//**
     * 
     */
    private static final long serialVersionUID = 1L;

    // 生成缓存用背景Image
    Image _screen = new Bitmap(640, 480, 1).getImage();

    //获得画布
    Graphics _graphics = _screen.getGraphics();

    final private int _rs = 6;

    private int[][] _chess = null;

    private int[] _obj_block = null;
    // Bitmap为loonframework提供类,内部混合封装了Image和BufferedImage,提供了通用的处理方式
    // 背景图
    Bitmap _back_bitmap = null;

    // 出水图1
    Bitmap _water_start = null;

    // 出水图2
    Bitmap _water_start2 = null;

    // 左边框图
    Bitmap _left_box = null;

    // 左侧辅助框
    Bitmap[] _leftnew_sprites = null;

    // 砖块地图
    Bitmap[][] _character_sprites = null;

    // 光标
    Bitmap _cursor = null;

    
    Bitmap bitmap = null;

    /** *//**
     * 构造函数
     *
     */
    public TgIrrigationScript() ...{
        initialize();
    }

    /** *//**
     * 初始化
     *
     */
    public void initialize() ...{
        
        setBackground(Color.BLACK);
        setSize(640, 480);

        _leftnew_sprites = new Bitmap[4];

        _character_sprites = new Bitmap[_rs][_rs];

         _back_bitmap = new Bitmap("./image/pano.png");

         _water_start = new Bitmap("./image/water_start.png");

         _water_start2 = new Bitmap("./image/spr16.png");

         _left_box = new Bitmap("./image/left_box.png");

         _cursor = new Bitmap("./image/choose_box.png");

         bitmap = new Bitmap("./image/mud.png");
        // 出水图绘制坐标
        _water_start.setDrawXY(272, 2);
        // 左边框绘制坐标
        _left_box.setDrawXY(25, 20);
        _water_start2.setDrawXY(308, 45);
        //游标绘制坐标
        _cursor.setDrawXY(308, 91);
        for (int i = 0; i < _leftnew_sprites.length; i++) ...{
            _leftnew_sprites[i] = new Bitmap("./image/mud.png");
            _leftnew_sprites[i].setDrawXY(42, 204 - i * 56);
        }
        _leftnew_sprites[0].setDrawY(212);
        for (int i = 0; i <_rs; i++) ...{
            for (int j = 0; j < _rs; j++) ...{
                _character_sprites[i][j] = new Bitmap("./image/mud.png");
                _character_sprites[i][j].setDrawXY(i * 48 + 164, j * 48 + 91);
            }
        }

         _chess = new int[_rs][_rs];

         _obj_block = new int[4];
            // 左侧辅助栏读取图形
            for (int i = 0; i < 4; i++) ...{
                down();
            }
        // 设定监听
        setFocusable(true);
        addKeyListener(this);
    }

    public void update(Graphics g) ...{
        paint(g);
    }

    public void paint(Graphics g) ...{
    

        // 背景绘制
        _back_bitmap.draw(_graphics);
        // 出水图绘制
        _water_start.draw(_graphics);
        //
        _water_start2.draw(_graphics);
        // 左边框图绘制
        _left_box.draw(_graphics);
        // 左侧辅助框绘制
        for (int i = 0; i < _leftnew_sprites.length; i++) ...{
            _leftnew_sprites[i].draw(_graphics);
        }
        // 绘制砖块
        for (int i = 0; i < _character_sprites.length; i++) ...{
            for (int j = 0; j < _character_sprites[i].length; j++) ...{
                _character_sprites[i][j].draw(_graphics);
            }
        }
        // 绘制选中光标
        _cursor.draw(_graphics);
        g.drawImage(_screen, 0, 0, this);
    }

    

    public void down() ...{
        int steps = 0;
        _obj_block[0] = _obj_block[1];
        _leftnew_sprites[0].setBufferedImage(_leftnew_sprites[1]
                .getBufferedImage());
        _obj_block[1] = _obj_block[2];
        _leftnew_sprites[1].setBufferedImage(_leftnew_sprites[2]
                .getBufferedImage());
        _obj_block[2] = _obj_block[3];
        _leftnew_sprites[2].setBufferedImage(_leftnew_sprites[3]
                .getBufferedImage());
        if (steps < (_rs * _rs)) ...{
            // 位图
            int[] tmparr = new int[] ...{3,5,6,7,9,10,11,12,13,14,15};
            // 随即选取
            int tmpint = tmparr[new Random().nextInt(11)];

            _obj_block[3] = tmpint;

            _leftnew_sprites[3].setBufferedImage(new Bitmap("./image/spr"
                    + tmpint + ".png").getBufferedImage());
        } else ...{
            _obj_block[3] = 0;
            _leftnew_sprites[3].setBufferedImage(bitmap.getBufferedImage());
        }
        steps += 1;
    }

    /** *//**
     * 放下事件处理
     * @param x
     * @param y
     */
    public void putCase(int x, int y) ...{
        if (this._chess[x][y] == 0) ...{
            _character_sprites[x][y].setBufferedImage(_leftnew_sprites[0]
                    .getBufferedImage());
            _chess[x][y] = _obj_block[0];
            down();
            //_obj_block[0]为最后的渠道方块,所以为0时代表数据读完
            if (_obj_block[0] == 0) ...{
                endCase();
            }
        }
    }


    /** *//**
     * 判断选中图形能否贯通
     * @param x
     * @param y
     * @param dire
     * @return
     */
    public boolean crossInclude(int x, int y, int dire) ...{
        boolean flag = false;

        switch (dire) ...{
        case 1:
            flag = SimpleArray.include("3,5,7,9,11,13,15", _chess[x][y]);
            break;
        case 2:
            flag = SimpleArray.include("3,6,7,10,11,14,15", _chess[x][y]);
            break;
        case 3:
            flag = SimpleArray.include("5,6,7,12,13,14,15", _chess[x][y]);
            break;
        case 4:
            flag = SimpleArray.include("9,10,11,12,13,14,15", _chess[x][y]);
            break;
        }

        return flag;
    }

Java仿太阁立志传5相关推荐

  1. 《太阁立志传4》 所有武将卡的取得

    <太阁立志传4> 所有武将卡的取得                                dOSKEY lEE     想必大家都玩过<太阁立志传4>这个游戏.里面有6 ...

  2. (转)太阁立志传立志传5完全攻略

    http://www.wodegame.com/html/TGLZ/TG5/GL/10611/ 玩客帝国单机专题太阁立志传太阁立志传5攻略秘籍 太阁立志传立志传5完全攻略 2007-11-19 来源: ...

  3. (转)太阁立志传立志传5太阁立志传技巧篇

    http://www.wodegame.com/html/TGLZ/TG5/GL/10628/ 玩客帝国单机专题太阁立志传太阁立志传5攻略秘籍 太阁立志传立志传5太阁立志传技巧篇 2007-11-20 ...

  4. JAVA中是传值还是传引用?回答KEZHANG问题

    首先,推荐对Java有一定理解的同仁一本书<Practical Java>.在<Practical Java>中也有一个章节介绍Java中关于传值和传引用的问题,堪称经典. & ...

  5. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 如果不知道如何上传 ...

  6. java仿qq思路_java仿QQ聊天软件OIM艰辛之路(开源项目)

    既然QQ能仿ICQ, 咱java也来个仿QQ. 在我刚学完java后,就想做点什么项目锻炼下自己的技能.凑巧的是,我一个同样学java的朋友在做一个仿qq的项目,不过他做的实在太丑了. 然后他想让我也 ...

  7. 基于JAVA至臻阁古董拍卖网计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA至臻阁古董拍卖网计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA至臻阁古董拍卖网计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  8. Java仿小米计算器源码_xiaomi-Calculator 仿照小米的计算器功能,作为一个Android的初学者可以参考,界面简单大方。 259万源代码下载- www.pudn.com...

    文件名称: xiaomi-Calculator下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 795 KB 上传时间: 2016-06-13 下载次数: 0 提 ...

  9. java获取ajax上传的文件,Java使用Ajax异步上传文件

    相关代码示例: html代码片段: 名称 class="layui-input"> 描述 文件 请选择配置文件 立即提交 重置 js代码片段: //上传配置文件 $(&quo ...

最新文章

  1. log4j WARN 的解决办法
  2. 网络工程原理与实践教程实验安排
  3. C# RGB颜色转换为16进制
  4. JTable常见用法细则
  5. c是过程化语言吗数据库,A.数据库语言B.过程化语言C.宿主语言D.数据库管理系统...
  6. CDN行业“三足鼎立”格局已定,谁能代表未来?
  7. ping html 微信支付,说说PING++介入微信H5支付,我趟过的坑。
  8. 力扣 删除链表的倒数第N个节点
  9. plantuml 方法图_plantuml画流程图
  10. 怎么在HTML图片中加文字,html+css怎么在图片上添加文字
  11. Spring 的事务传播机制
  12. 腾讯电脑管家怎么阻止软件自动安装
  13. 什么是长连接和短连接
  14. html图片逆时针转换,css3怎样做出逆时针旋转倒计时
  15. 十、网络编程(高琪java300集+java从入门到精通笔记)
  16. [论文速度] 同时解决成像时,曝光不足和曝光过度问题:Deep Reciprocating HDR Transformation
  17. 平均风向计算中对于风向角的判断
  18. 连续系统分析【信号与系统四】
  19. 嵌入式 linux下proc目录下的文件详解
  20. 求y=sin(x)从0到2*pi,与x轴围成的面积

热门文章

  1. QQ2004II beta3显IP
  2. mysql查询比对提速_MySQL查询性能优化
  3. Rockwell EDI 855 采购订单确认报文详解
  4. L1-041 寻找250 (10 分)(三种常见的不断输入方法)
  5. 集成Google登录并获取个人性别等信息
  6. 弘辽科技:社交电商时代,实体门店将如何通过社群团购转型升级
  7. 手机字体缩放html,手机系统设置字体大小影响h5页面字体
  8. html复选框的背景,更改html复选框的背景颜色
  9. Java中request有哪些方法,Java--获取request中所有参数的方法
  10. MFC之使用 Windows 标准控件