android游戏开发实例-可局域网对战的飞行棋(二)

本文是android游戏开发实例系列的第二篇,详细介绍了飞行棋游戏的运行流程和资源加载。游戏启动时,资源加载和网络对接在后台线程进行,初始化游戏数据后,进入游戏循环,包括AI策略、网络玩家操作和托管功能。文章重点讨论了棋盘逻辑,如棋子移动、判断和结束回合的细节,并提供了部分关键代码。最后预告了AI策略和网络通信的后续讲解。
摘要由CSDN通过智能技术生成

前一篇我们设计了数据对象,今天我们来描述整个游戏的运转流程。

我拿数位板手写了一个流程示意图,如图:



首先概述一下这一整个思路:

当玩家选择进行游戏之后,会跳转到一个Activity。那么在跳转后,我们就要开始载入资源,比如音效、图片素材等。这个载入可能会比较耗时,所以我们可以另开一个线程进行载入,然后通过myHandler进行通知主线程更新UI并进行初始化游戏的动作。另外,由于要实现网络对战的功能,所以我们还要另开一个线程进行网络对接的操作。

load_resources()主要包括载入图像,以及进行一些按键绑定。这个你们可以轻松实现,无非一些FindviewbyId、setOnClickListner,略去。

资源加载完之后,我们要开始初始化游戏的数据,如init_game():

private void init_game() throws Exception{
        try{
            complete_arrow_uesd=0;//初始化已用完成箭头标志的数目
            whosTurn=(int)(Math.random()*4);//随机决定谁先开始
            roll_num=0;
        }
        catch (Exception e){
            e.printStackTrace();
            System.out.println("注意:初始化游戏失败");
            throw e;
        }
        System.out.println("注意:初始化游戏完毕");
    }
在这个函数中,我们不需要做太多操作,只需要把一些游戏常用数值进行初始化。基于这个思想,你可以往里面填充你所需要的其他内容。

接下来,游戏开始。游戏一旦开始,我们需要读取当前对局所有玩家的总体数据。还记得我们曾经设置过一个ConfigHelper类么?所以现在,这个game_start()可以这么写:

private void game_begin(){
        //游戏开始时的操作
        chdm=new ConfigHelper(Value.Local);//初始化游戏设定,当前游戏为线下游戏
        chdm.setHost(true);
        chdm.setGreenType(Value.AI);//绿方为AI,下同
        chdm.setBlueType(Value.AI);
        chdm.setYellowType(Value.AI);
        //填充你所需要的其他内容
        System.out.println("游戏开始!");
        turn_begin();//设定装载完毕,回合开始
    }
现在,一个回合正式开始了。

在最初的设计需求中,我提到过我们要满足一个玩家"托管"状态的功能。

所以在这个流程中,我们要对当前回合的玩家进行判断,如果是AI,那么执行AI策略;同时还需要判断当前是否为网络游戏,如果是,判断是否为服务器,如果是服务器,要负责向具体的玩家收信,并把收信内容转发给其他的Online玩家;如果不是,就单纯从服务器收信,并对收到的数据进行处理就行了。我是这么设计的:

private void turn_begin(){
        //回合开始
        resetRoll();//重置骰子
        System.out.println("玩家:["+Value.PlayerName[whosTurn]+"]的回合!Type:"+chdm.getPlayerType(whosTurn)+",请投掷骰子!");
        //判断当前玩家是人还是AI
        if(chdm.getGameType(
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值