人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[6]——走马观花

简介:




在游戏中通常不可能允许一幅场景贯穿始终,这就提出了场景变更的要求,基于这一要求的实现,我们将进行如下效果的Java代码实现。


下载地址[url]http://www.3adisk.com/?onlinezero[/url][文件名:RpgChair0to6.rar]

或另存以下X(gif)文件为rar


   
 
由于代码量已开始增加,由本回开始仅给出部分代码实现,详细请进行下载:
 
在本例中,本人采取的位图偏移算法如下:
 
MyPanle 中实现如下:
 
 
         // X 偏移位置
         int  offsetX = MyPanel. WIDTH  / 2 -  role .getX() *  CS ;
         // 计算 X 偏移量
        offsetX = Math.min(offsetX, 0);
        offsetX = Math.max(offsetX, MyPanel. WIDTH  - GameMap. WIDTH );
      
         // Y 偏移位置
         int  offsetY = MyPanel. HEIGHT  / 2 -  role .getY() *  CS ;
         // 计算 Y 偏移量
        offsetY = Math.min(offsetY, 0);
        offsetY = Math.max(offsetY, MyPanel. HEIGHT  - GameMap. HEIGHT );
         //System.out.print(role.getX()+":"+role.getY());
         // 绘制可偏移位置的地图
         map .draw(g, offsetX, offsetY);
 
         // 绘制可偏移位置的角色
         role .draw(g, offsetX, offsetY);
 
 
 
GameHandle GameMap 中,均需注入 offsetX offsetY 值,以生成对应图像。
GameHandle 实现:
// Example6 开始,为了实现背景的移动,所有算法都要加入偏移值
     public   void  draw(Graphics g,  int  offsetX,  int  offsetY) {
    // count 作为图像的偏移数值 , 并于 Example4 中添加 direction 以获取所处图像块位置
        g.drawImage( image x  *  CS  + offsetX,  y  *  CS  + offsetY,  x  *  CS  + offsetX +  CS y  *  CS  + offsetY +  CS ,
             count  *  CS direction  *  CS CS  +  count  *  CS direction  *  CS  +  CS panel );
}
 
GameMap 实现:
     // 修正 Example6 中绘制方式,引入地图坐标偏移计算
     public   void  draw(Graphics g,  int  offsetX,  int  offsetY) {
    
         int  firstTileX = pixelsToTiles(-offsetX);
         // 变更 X 坐标
         int  lastTileX = firstTileX + pixelsToTiles(MyPanel. WIDTH ) + 1;
       
         // 返回最小 X 偏移值
        lastTileX = Math.min(lastTileX,  COL );
       
        
         int  firstTileY = pixelsToTiles(-offsetY);
         // 变更 Y 坐标
         int  lastTileY = firstTileY + pixelsToTiles(MyPanel. HEIGHT ) + 1;
       
         // 返回最小 Y 偏移值
        lastTileY = Math.min(lastTileY,  ROW );
     // Java 或任何游戏开发中,算法都是最重要的一步,本例尽使用
     // 简单的双层 for 循环进行地图描绘,
                  for  ( int  i = firstTileY; i < lastTileY; i++) {
                        for  ( int  j = firstTileX; j < lastTileX; j++) {
                           // switch 作为 java 中的转换器,用于执行和 () 中数值相等
                        //  case 操作。请注意,在 case 操作中如果不以 break 退出
                        //  执行; switch 函数将持续运算到最后一个 case 为止。
                            switch  ( map [i][j]) {
                                case  0 :  //  地板
                                   g.drawImage( floorImage tilesToPixels(j) + offsetX, tilesToPixels(i) + offsetY,  panel );
                                    break ;
                                case  1 :  //  墙壁
                                   g.drawImage( wallImage tilesToPixels(j) + offsetX, tilesToPixels(i) + offsetY,  panel );
                                    break ;
                           }
                       }
            }


本文转自 cping 51CTO博客,原文链接:http://blog.51cto.com/cping1982/130235
    }
相关文章
|
10天前
|
Java API Maven
如何使用Java开发抖音API接口?
在数字化时代,社交媒体平台如抖音成为生活的重要部分。本文详细介绍了如何用Java开发抖音API接口,从创建开发者账号、申请API权限、准备开发环境,到编写代码、测试运行及注意事项,全面覆盖了整个开发流程。
53 10
|
20天前
|
SQL 监控 数据可视化
完全开源!国内首个完全开源JAVA企业级低代码平台
JeeLowCode 是一款专为企业打造的 Java 企业级低代码开发平台,通过五大核心引擎(SQL、功能、模板、图表、切面)和四大服务体系(开发、设计、图表、模版),简化开发流程,降低技术门槛,提高研发效率。平台支持多端适配、国际化、事件绑定与动态交互等功能,广泛适用于 OA、ERP、IoT 等多种管理信息系统,帮助企业加速数字化转型。
|
16天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
34 4
|
18天前
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
47 4
|
23天前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
17天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
31 0
WK
|
23天前
|
开发框架 移动开发 Java
C++和Java哪个更适合开发移动应用
本文对比了C++和Java在移动应用开发中的优劣,从市场需求、学习难度、开发效率、跨平台性和应用领域等方面进行了详细分析。Java在Android开发中占据优势,而C++则适合对性能要求较高的场景。选择应根据具体需求和个人偏好综合考虑。
WK
41 0
|
8天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
|
7天前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
|
7天前
|
Java 开发者
Java多线程编程的艺术与实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的技术文档,本文以实战为导向,通过生动的实例和详尽的代码解析,引领读者领略多线程编程的魅力,掌握其在提升应用性能、优化资源利用方面的关键作用。无论你是Java初学者还是有一定经验的开发者,本文都将为你打开多线程编程的新视角。 ####
下一篇
无影云桌面