首页 > 编程语言 >学习编程从游戏开始——多彩俄罗斯方块的设计构想

学习编程从游戏开始——多彩俄罗斯方块的设计构想

时间:2024-12-21 19:21:26浏览次数:4  
标签:包括 多彩 编程 图案 编写 定制 方块 游戏

0.前言

我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。

了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”:

学习编程从游戏开始——编程计划(目录) - lexyao - 博客园

这是一篇通用文章,讲解的是各种方案都能用到的内容。

编写一个程序之前的策划至关重要。这个策划方案要说明要编写的程序能做什么(功能)、有什么约定(规则)、以什么形式出现(界面)、怎么实现(程序设计)、是否达到了预期的效果(功能测试)、特殊情况下的可靠性(极限测试)。

按着比较正规的说法,设计一个应用程序需要经过以下几个阶段:

  1. 编制软件开发计划。这一阶段需要做的工作包括:
    1. 系统定义及分析
    2. 可行性研究
    3. 编制实施计划报告
  2. 需求分析。这一阶段需要做的工作包括:
    1. 用户需求分析,包括功能、性能、可靠性等等
    2. 资源需求分析,包括需要的技术人员、财务资源、开发工具等
  3. 软件设计。这一阶段需要做的工作包括:
    1. 程序结构设计,包括模块划分、数据流程、程序结构、接口等等
    2. 详细设计阶段,包括具体的代码编写、测试数据准备等
  4. 测试。这一阶段需要做的工作包括:
    1. 功能测试,也就是说是不是实现了计划的功能
    2. 极限测试,也就是说在数据或者操作达到状态时确保程序能够采用有效的方法处理可能出现的危机,确保安全运行
  5. 维护。这一阶段需要做的工作包括:
    1. 问题的发现与收集。任何软件的开发都可能存在缺陷,在测试阶段不可能发现全部的问题,有些问题到了使用阶段才会暴露出来。
    2. 问题原因分析。对于收集到的问题,分析发生的条件,找到发生的原因。
    3. 解决问题。通过修改程序的代码,修正出现的问题。
    4. 测试。测试修改后的程序是否达到了预期的效果、可靠性等。

在这篇文章里,我主要讲述以下几个方面的内容:

  1. 要编写的应用程序的功能要求
  2. 要编写的程序的界面布局
  3. 编写程序总体思路
  4. 结束语

1.要编写的应用程序的功能要求

总的目标是编制一款使用者(下面称为用户)可以定制的俄罗斯方块游戏程序。

可以定制主要表现在以下几个方面:

  • 有多种的界面可供使用者选择,包括
    • 背景图案可以有多种形式可供选择,还可使用用户提供的图片、颜色等
    • 方块图案可以有多种形式可供选择,还可使用用户提供的图片、颜色等
  • 计分方法可以定制,包括用户可以在基础计分的基础上是否:
    • 按一次消减的数量加分,加分的倍数可设置
    • 消减多行是否按行数加分
    • 消减行所在的高度是否影响加分
  • 速度可定制,速度是指两次动作之间的间隔时间,最大间隔为1秒(1000毫秒)包括
    • 是否按消减数量的增加而加快速度
      • 按消减方块数量加分的算法
      • 一次消减多行是否有速度奖励,奖励算法
    • 是否按游戏时间的延长而提高速度
      • 消耗时间的加速算法
      • 暂停是否计入游戏时间
  • 游戏声音可定制,包括
    • 背景音乐定制
      • 游戏中是否开启背景音乐
      • 可选的背景音乐,包括用户提供的
    • 操作声音可定制
      • 游戏中是否给操作提供声音
      • 每种操作可选择不同的操作声音,包括用户提供的声音
  • 难度可定制,除了上面的速度定制外,还有起始难度设置,包括
    • 起始行数:指定游戏开始时已经存在方块的行数
    • 起始速度:指定游戏开始时两次动作之间的间隔毫秒数,取值0-1000毫秒

2.要编写的程序的界面布局

  • 主界面为一个窗口,从上到下分为标题栏、主菜单、工具栏、客户区、状态栏
    • 标题栏:显示应用程序的标题
    • 主菜单:提供给应用程序可以进行的所有操作
    • 工具栏:提供游戏操作中常用的操作,特别是需要快捷操作的部分
    • 客户区:从左到右分为设置区、游戏区、战绩榜
      • 设置区:提供用户定制游戏的所有选择项,包括图案选择、计分规则、计时规则、声音定制、起始难度
        • 图案选择、
        • 计分规则、
        • 计时规则、
        • 声音定制、
        • 起始难度
      • 游戏区:呈现一个游戏机的样式,包括背景图案、显示屏、操作按钮
        • 背景图案,包括四角图案、四边图案、内部填充,可以是颜色或图片,可以是方角、圆角、切角或不规则角部图案,可以是四边凸起或阴影立体
        • 显示屏:在背景图案中部的上区,从左向右分为难度指示、游戏区、数据统计区
          • 难度指示:使用柱状的长条或进度条显示当前速度,可以用颜色提示难度(如果提示多个方块,可以在这个区域显示)
          • 游戏区:方块移动、堆砌、消减的区域,是游戏的核心
          • 数据统计区:以文字、数字显示当前游戏的各种统计数据,包括得分、块数等在战绩榜中显示的数据,还可显示距离升级还差的分数、下次出现的方块图案
        • 操作按钮:在背景图案中部的下区,包括操作按钮,可以用鼠标点击或键盘点击,包括旋转、左右移动、加速下行、快速跌落、暂停/恢复等。
      • 战绩榜:每种设置组合游戏得分排行榜,可包括总得分、总耗时、操作次数、消减次数、下落块数等,以及用这些数据计算出的得分率等数据
    • 状态栏

3.编写程序总体思路

  • 采用多种编程方式编写,实现编程方法的对比
  • 界面组件的选择根据不同的编程方法可以选择各自适宜的组件
  • 数据算法采用统一的算法和代码
  • 数据存储采用xml或json

4.结束语

事先形成一个完整的计划可以减少过程中修改方案造成的资源浪费,也有利于工作的顺利完成。

我写这个程序的目的是通过写程序的过程熟悉编写程序的方法,所以编写什么样的程序不重要,重要的是编写的过程和积累的知识。

 

标签:包括,多彩,编程,图案,编写,定制,方块,游戏
From: https://www.cnblogs.com/lexyao/p/18620616

相关文章

  • TIA环境下SCL编程练习:产生m到n之间的随机整数,存入数组
    假设需要读取100个随机数,存入有100个成员的数组。做这个练习是为了学习一下SCL编程。随机数使用系统时钟纳秒数来线性转换。新建项目,选用1500PLC(6ES7513-1AL02-0AB0,当然可以选用其它型号),设定本地时区,建立网络。新建DB,建立变量,取消优化块的访问。 新建FC,先建立内部变量如下......
  • 数据库与编程语言的连接
    title:数据库与编程语言的连接date:2024/12/21updated:2024/12/21author:cmdragonexcerpt:数据库与编程语言的连接是实现数据驱动应用程序的关键环节。通过使用不同的编程语言和数据库驱动程序,开发者可以在应用中实现对数据库的CRUD(创建、读取、更新、删除)操作。catego......
  • C vs C++: 一场编程语言的演变与对比
    引言C和C++是两种广泛使用的编程语言,它们有着深厚的渊源和各自独特的特点。C语言是C++的前身,而C++则是在C语言的基础上进行了扩展和改进。本文将从多个角度对这两种语言进行比较,帮助读者更好地理解它们之间的异同。全文将涵盖历史背景、语法与特性、应用场景、性能......
  • C++ 中的多线程编程:从基础到实战
        随着多核处理器的普及,多线程编程成为现代C++开发中的关键技能。C++11引入了强大的线程库,使得多线程编程更安全、更高效。本文将带你深入了解C++中的多线程编程,从基础概念到实际案例,逐步掌握如何用现代C++编写高效的多线程程序。一、多线程的基础概念  ......
  • 【AI编程助手系列】国产AI编程工具四大金刚之 通义灵码
    系列文章目录......
  • 【Python GUI 编程】tkinter :Ttk 组合框 Combobox
    在本文中,将介绍如何创建一个tkinterCombobox组合框小部件,该小部件允许用户从一组值中选择一个值。Combobox组合框小部件是新增的Ttk主题小部件,是Entry文本框和Listbox列表框的组合。除了允许在一组值中选择一个值外,它还允许输入自定义值。创建组合框要创建组合框小部......
  • ssm毕设青少年编程课程教学评价源码+程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容选题背景随着信息技术的迅猛发展,编程教育在青少年群体中的普及率日益提高,成为培养其创新思维和解决问题能力的重要途径。关于青少年编程课程的教学评价,现有研......
  • 【Python GUI 编程】tkinter:Ttk 选项卡 Notebook
    在本文中,将介绍如何使用TkinterNotebook小部件创建选项卡。Notebook是由TkinterTtk模块引入的强大小部件。允许开发者创建包含多个选项卡的界面,每个选项卡可以包含不同的内容。创建Notebook小部件,请使用如下构造函数:notebook=ttk.Notebook(master,**kw)添加选项卡......
  • C++ 中面向对象编程如何处理对象的状态存储与恢复?
    对象状态存储与恢复的基本概念在C++面向对象编程中,对象的状态是由其成员变量的值来确定的。对象状态存储是指将对象当前的成员变量值保存起来,而对象状态恢复则是指将之前保存的成员变量值重新赋值给对象,使对象回到之前的某个状态。通过序列化和反序列化实现状态存储与恢......
  • OneCode:开启高效编程新时代——企业定制出码手册
    一、概述   OneCode的DSM(领域特定建模)出码模块是一个强大的工具,它支持多种建模方式,并具有强大的模型转换与集成能力,能够提升开发效率和代码质量,同时方便团队协作与知识传承,还具备方便的仿真调试与部署功能以及DSM第三方语言转换特性。二、建模方式(一)CodeFirst......