当前位置: 首页 > news >正文

单机游戏的工作逻辑

一、单机游戏的通用设计

  (一)地图和角色的表示

  1、地图坐标通常用数组来存放。

  例如:结构体数组,对象数组。

 

  2、每个角色需要用结构体或者类封装坐标,其他参数

例如:

// 封装角色的坐标,攻击值

class Role{

     int x;   // 当前的横坐标

     int y;    // 当前的纵坐标

     int atackValue;    // 攻击值

}

 

 (二)地图的绘制

   1、绘制背景图片

   2、遍历角色的数组,绘制每个角色

    取出每个角色的x和y坐标值,绘制到对应位置。

   3、绘制其他的物品。

 

 

二、单机游戏的工作线程

 (一)事件处理线程

    1、初始化时给窗口设置鼠标和键盘的事件监听。

 

     2、事件触发时的处理逻辑

      假设以键盘的上下左右按键来控制移动。

      监听键盘事件处理逻辑的案例如下:

// 获取键盘触发按键的键码值

 

// 进行判断

 if(是向上方向键){

    把指定角色的y坐标值减去一个单位。

} else if(是向下方向键){

    把指定角色的y坐标值增加一个单位。

} else if(是向左方向键){

    把指定角色的x坐标值减去一个单位。

} else if(是向右方向键){

    把指定角色的x坐标值增加一个单位。

 

 (二)游戏界面定时刷新线程

        负责定时刷新游戏的界面,更新角色的位置,添加新图片,删除旧的图片。

 

   主要逻辑:

// 进入循环

while(运行标志变量是真值){

     // 清空窗口界面的所有画面

 

     // 绘制窗口游戏界面的地图背景

 

     // 绘制最新状态的游戏角色

 

     // 绘制其他的物品

 

     // 计算一下敌人的随机位置

 

     // 绘制敌人角色到画面

 

     // 休眠一段时间(假设是50毫秒)

}

 

三、总结

  1、单机游戏的核心:

    怎么封装数据。

    怎么绘制图形界面。

    怎么设置事件监听。

    键盘按键对应什么参数变化。

    怎么做到定时刷新画面。

 

  2、单机游戏省去了联网的复杂逻辑。

 

相关文章:

  • Spring IoC DI入门
  • QT-LINUX-Bluetooth蓝牙开发
  • 解释 TypeScript 中的类型保护(type guards),如何使用类型保护进行类型检查?
  • 麦肯锡外运集团企业卓越采购供应链管理体系规划(117页PPT)(文末有下载方式)
  • 阿里云平台Vue项目打包发布
  • 识别并脱敏上传到deepseek/chatgpt的文本文件中的护照信息
  • 晶鑫股份迈向敏捷BI之路,永洪科技助力启程
  • 天梯赛 L2-011 玩转二叉树
  • 使用uniapp的vite版本进行微信小程序开发,在项目中使用mqtt连接、订阅、发布信息
  • 若依(RuoYi)框架新手使用指南
  • Bilve 搭建手册
  • L2TP的LAC拨号模式实验
  • 【SpringBoot】你不能不会的SpringBoot图形验证码生成
  • 自学Python创建强大AI:从入门到实现DeepSeek级别的AI
  • bootstrap介绍(前端框架)(提供超过40种可复用组件,从导航栏到轮播图,从卡片到弹窗)bootstrap框架
  • 1688商品数据实战:API搜索接口开发与供应链分析应用
  • Linux--进程创建
  • CTF类题目复现总结-[WUSTCTF2020]girlfriend 1
  • wpa_supplicant驱动初始化源码分析
  • Gin框架学习
  • 茅台总经理到访五粮液:面对白酒行业周期性调整,需要团结一心的合力
  • 俄乌直接谈判结束
  • 韶关一企业将消防安装工程肢解发包,广东住建厅:罚款逾五万
  • 国税总局上海市税务局回应刘晓庆被举报涉嫌偷漏税:正依法依规办理
  • 上交所五方面落实募资新规:强化关键少数责任和股东权利保障
  • 刘强东坐镇京东一线:管理层培训1800人次,最注重用户体验