海南大学 周宇扬
引言:随着TD-LTE移动通信、智能手机等软硬件技术的发展,越来越多的益智型小程序诞生,大大的促进了人们的娱乐生活。C语言作为一种面向过程的程序开发语言,拥有数据、指针、结构体等多种数据类型,运行速度非常快,可移植性强,编制游戏程序具有先天性优势,具有重要的作用和意义。本文基于笔者的研究和分析,首先描述C语言在游戏程序开发中的优势,然后以经典益智游戏俄罗斯方块为实例,设计了C语言数据、结构体和链表,为游戏程序开发提供参考。
C语言作为一种应用程序开发语言,拥有丰富的数据结构类型和运算符,并且开创性的提出了指针类型,实现计算机物理地址的运算,进行位操作,兼具高级程序语言和低级程序语言的优点,可以变现系统软件,也可以开发应用软件,比如Unix操作系统、Linux操作系统、游戏程序等,利用图形功能支持各类尺寸的显示器和驱动器,计算功能和逻辑判断能力非常强。C语言在游戏程序开发中具有很强的优势,如下所述:
(1)面向过程程序开发。C语言是一种面向过程的语音,程序员可以使用过程或函数执行任务,面向过程语言与人们的日常思考一直,易于学习和掌握,能够面向过程的语音开发程序,编写算法实现程序功能。
(2)拥有许多库文件。C语言提供了大量的函数程序,包括系统自动生成的函数和程序语言编写的函数,C语言编译器自带头文件,这些头文件中的函数都是已经编写完成的基本功能,可以直接调用和使用。
(3)编译运行速度非常快。C语言编译器产生的机器代码运行速度非常多,C编译器编译千行代码仅需要两秒,同时完成优化代码提高执行速度功能。
俄罗斯方块是一款风靡全球的智能手机应用程序,利用移动、旋转和摆放等功能输出各种方块,然后将其排列成一行或多行消除得分,俄罗斯方块看似简单却变化无穷,简单易学和益智,但是熟练掌握应用程序操作却需要开动脑筋,因此目前的普及程度非常高。本文基于C语言开发俄罗斯方块游戏程序,其主要功能包括游戏方块预览、游戏方框控制、游戏分数统计和游戏帮助功能。
游戏程序初始化运行开始之后,游戏方块预览区域出现一个游戏方块,有利于玩家控制游戏策略。俄罗斯方块有七种不同的方块组成,因此具有七种策略,游戏方块生成是随机的。游戏方块控制能够可以实现方块的自由下落、左移、快速下移、右移、旋转和消除行。游戏分数控制可以实现分数增加,消除一行增加100分,也可以自动化返回游戏初始界面。游戏帮助功能可以实现游戏操作提醒功能。俄罗斯方块的主要算法流程如图1所示。
图1 俄罗斯方块结构化流程图
俄罗斯方块采用C语言开发,关键功能是实现数据类型的设计,其余操作实现简单,数据类型包括数组、结构体和链表。
(1)数组设计
C语言数组可以把具有相同类型的数据有序组织在一起。俄罗斯方块使用了三个关键数组,分别是俄罗斯方块的四个变换样式、方块颜色、玩家游戏得分。
(2)结构体设计
俄罗斯方块使用了两个结构体,分别是方块结构体Struct Block和Struct BlockInfo,Struct Block可以定义俄罗斯方块的状态和颜色,提示给出下一方块的信息;Struct BlockInfo能够定义俄罗斯方块的移动方向和移动距离。
Struct Block{ unsigned int rockShapeBits;//描述方块的形状,8位字节,每4位表示一行
Int nextRockIndex;//表示下一个方块的数组下表}Block Type;
Struct BlockInfo { int left; int right; int translate; int drop; int speeddrop} BlockInfo Type; //描述方块方向
(3)链表设计
C语言最具关键的程序数据类型就是指针,利用指针可以设计链表结构,链表结构可以克服数据结构的许多缺点,比如使用数组必须预知数据大小,这样很容易浪费内存空间。链表结构则充分利用计算机的内存空间,将所有的分散内存空间实现动态管理,俄罗斯方块的链表定义如下所述fillrectangle(50+(block->x+c01)*BLOCK—LEN,50+(block一>Y+row)*BLOCK LEN。
基于C语言的俄罗斯方块游戏采用了先进的图形界面组函数、数组、结构体和指针链表等技术,能够实现不同类型的方块生成和加工,下左右快速移动和旋转变形等,也可以利用函数实现整行消除。俄罗斯方块有效提升了大众移动设备的娱乐需求,也提高了笔者学习和掌握C语言的实践,体会到利用C语言编程需要熟练掌握它的数据类型,也需要根据需求随机的谷歌或百度C语言的函数库,能够实现快速编程和编译,让笔者掌握更多的C语言编程设计方法。同时,基于C语言设计俄罗斯方块还可以复制到其他程序,比如贪吃蛇游戏、五子棋游戏等,一通二百通,更好的为未来C语言应用打下基础。