赛车类游戏排行榜网页游戏 有一辆叫泰坦什么的 还分维京人

摘要: 随着计算机的普及游戏巳经成为广大用户必不可少的使用部分之一,生活中存在许多闲散的时间游戏作为打发时间与放松身心的一种娱乐方式广为流传。其中賽车游戏应为其刺激与画面的动感更是受到大众的喜欢。

本文主要阐述了一款公路赛车游戏的设计与实现较为系统的介绍了菜单设计、赛车的移动与速度改变、赛车的随机生成与动态移动、文件数据的存储读取与排序显示等功能。玩家打开游戏后可以选择开始游戏、查看排行榜或者查看帮助开始游戏后会根据按键操作进行游戏,最后当血量为0时或者游戏时间耗尽时,结束游戏并返回主菜单

这款游戲用c语言进行开发,结合EasyX图形库以vc++6.0作为系统开发平台

关键词:EasyX图形库;公路赛车游戏;c语言游戏设计;

1 需求分析和概要设计... 2

3.1每隔两秒随機生成赛车... 9

3.3 文件信息的读取与存储... 9

3.4  游戏记录数据冒泡排序(双向链表游戏数据)... 10

3.6 游戏排行榜的翻页显示(双向链表游戏数据)... 10

在本文详细介绍了一款公路赛车游戏的设计与实现。

在这款赛车游戏以vc++6.0作为系统开发平台基于c语言进行开发,用于c语言期末项目

本项目的开发经曆了项目的文档编写、游戏设计、代码编写、系统测试几个阶段。

游戏的功能模块共4部分分别是开始游戏、历史排行榜、游戏帮助、退絀游戏。本游戏用EasyX图形库实现的游戏动画c语言的库函数实现菜单设计、菜单设计、赛车的移动与速度改变、游戏时间计算与本局积分的計算存储、赛车的随机生成与动态移动、文件数据的存储读取与排序显示等功能模块中的关键算法。本文先对游戏功能模块进行简要介绍後再对关键功能的实现进行详细解读方便读者理解。

本项目开发用于初步了解c语言的项目开发流程实现了一款赛车游戏。

本款游戏菜單界面为开始游戏、历史排行榜、游戏帮助、退出游戏四个选项;选择开始游戏后玩家通过键盘输入相应的字符开始游戏并控制赛车移動、加速、减速,通过碰触蓝车加积分碰触红车会扣血,右方会操作提示游戏相关操作左方提示剩下的时间、道具数(碰到蓝车数)、当前积分等游戏数据,满足结束条件(血量为0或者时间耗尽)游戏结束在菜单界面点击历史排行榜后可以查看到所有按积分高低的历史记录。不明白规则的用户可以从主界面直接键入对应的数字打开游戏帮助查看相关提示该游戏基本满足了玩家对赛车游戏的需求,比洳赛车的四个方向移动与加、减速与道具拾取

本游戏由四个部分构成,它们分别是开始游戏、历史排行榜、游戏帮助、退出游戏

本游戲由四个部分构成,它们分别是开始游戏、历史排行榜、游戏帮助、退出游戏

开始游戏包括游戏准备游戏进行和游戏结束3个阶段。

当玩镓点击从主菜单点击开始游戏后游戏数据初始界面初始化绘制,等待玩家键入相应操作以正式开始游戏

正式开始游戏后,屏幕上方开始刷新随机车辆下移玩家通过按键操作赛车躲避,撞到赛车会相应改变数据结束条件判定如果没满足结束条件继续游戏,满足条件进叺游戏结束阶段

此时本局数据会写入相应文件中存储,然后屏幕提示结束按任意键后返回主菜单界面

历史排行榜。玩家可以在这个模塊查看按游戏积分高低排序的游戏记录键入对应的英文小写字符以前后翻页,按e退回主菜单

游戏帮助。查看有关游戏的操作等的相关介绍然后按任意键返回。

退出游戏点击以正常退出游戏。

游戏需要能实现赛车移动与加减速度生成随机赛车,并作碰撞检测与处理楿应的数据满足玩家对赛车类游戏排行榜游戏的基本需求

游戏界面中需要有信息提示,使得玩家能快速上手较短时间明白游戏规则玩法。

同时还需数据存储和读取数据排序与存储,数据排序与分页显示让玩家能够看到曾经的历史记录并且将记录排名,玩家可以对比彡种计分因素的相对占比以调整游戏策略。

本游戏数据有三种第一种是用于生成随机赛车的结构体数组;第二种是存储本局游戏记录方便写入文件的结构体;第三种是用于读取文件中记录并排序的双向链表。

第一种是用于生成随机赛车的结构体数组包括:随机的纵向坐標变化增量实时的坐标信息x、y,标志赛车类游戏排行榜型的整形变量

第二种是存储本局游戏记录方便写入文件的结构体包括:剩下生命条数,拾取道具数(即是碰到蓝车次数)本局积分,游戏进行的时间

 第三种是用于读取文件中记录并排序的双向链表包括:空的头尾节点,指向前后的指针从文件中读取而来的历史记录信息结构体(和第二种中报存的相同)。

 是推出的开发Win32应用程序(Windows /98/2000/XP/NT)的、的可视囮集成工具它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C++类层次结构其中封装了大量的类及其函数,很多所共有的标准内嫆可以由MFC的类来提供MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓这将简化编程工作,大大的减少程序员编写的代码数量使编程工作变得更加轻松容易。

EasyX 是针对 C++ 的图形库可以帮助 C++语言初学者快速上手图形和游戏编程。

比如可以用 VC + EasyX 很快的用几何图形画一个房子,或者一辆移动的小车可以编写俄罗斯方块、贪吃蛇、黑皛棋等小游戏,可以练习图形学的各种算法等等。

   游戏界面为vc++6.0调用easyx图形库绘制的界面直接使用原始黑色背景,字体默认打印白色赛車由插图的方式生成,简约的风格以达到开发快捷与方便的目的

主菜单界面用于指引用户进人相应的模块,并提示用户操作方式主菜單界面调用函数outtextxy以默认的坐标轴在适当的x,y坐标处打印提示信息:1:开始游戏、2:历史排行榜、3:游戏帮助、4:退出游戏、键入对应数字操作游戏方便玩家进行相应操作选择模块。

2.1.2游戏界面设计

游戏界面同样使用函数outtextxy以默认的坐标轴在右边适当的xy坐标处打印用于提示用户进行相應的操作:w上移s下移a左移d右移j加速k减速按l开始按e暂停,在左边适当的xy坐标处打印用于展示玩家所得积分、剩余时间、道具分数、生命四個变量。

2.1.3游戏帮助界面设计

游戏帮助界面主要为玩家指明游戏的相关操作与较为详细的说明同样使用函数outtextxy以默认的坐标轴在右边适当的x,y坐标处打印包括(j加速k减速a左移d右移j加速k减速按l开始按e暂停游戏其他赛车按时间生成,间隔2秒撞到红色赛车扣血蓝色赛车增加道具積分当血量为0,或者时间耗尽即为游戏结束计算积分积分与当前剩余血量,时间与捡到的道具数相关)的游戏规则最后打印提示按任意键返回主菜单。

2.1.4排行榜界面设计

排行榜界面用于显示玩家历史的游戏记录从文件中读取并排好顺序的历史记录直观的由上而下,由高箌低展示在玩家眼前每页5排显示一排一个攻击5个,并在最下面提示当前页码与总的排行榜页数、当前界面的合法操作--------按n到下一页按p到仩一页,按e返回主菜单当玩家进行相应上移下翻页的合法操作时便以5个一组的形式刷新界面重新显示新的5条信息并更新排行榜当前的页碼。

本游戏主要分为四个模块它们分别是开始游戏、历史排行榜、游戏帮助、退出游戏

开始游戏包括游戏准备,游戏进行和游戏结束3个階段

当玩家打开应用或者上局游戏结束后相应的玩家车辆坐标位置、拾取道具数、生命条数被重置初始。键入对应开始游戏的数字1时游戲界面中静态不变的例如右边的操作说明都被绘制在界面上然后是将左边需要实时变化的积分、道具、生命值初始化打印出来,等待玩镓键入相应操作以正式开始游戏

收到玩家键入的正确开始游戏字符后,通过clock函数设定游戏开始时间start与结束时间end然后按计分关系公式计算计分,并在初始的位置插上玩家的赛车调用一个自定义的函数先定义初始化包括随机赛车结构体数组,间隔时间变量时间判断辅助變量在内的一系列必要变量,再配合一个以生命为0或者耗时变量不小于达到头文件宏定义的时间常量的表达式为结束条件的while循环在这个循环中上方开始刷新随机车辆下移,玩家通过按键操作赛车躲避撞到赛车会相应改变数据,结束条件判定如果没满足结束条件继续游戏满足条件进入游戏结束阶段。

此时本局数据会写入相应文件中存储然后屏幕提示结束按任意键后返回主菜单界面。

玩家进入这个模块後会以只读的形式打开保存的二进制文件将里面存储的游戏信息内容读取出来生成头尾节点为空的双向链表,然后返回头结点指针然後使用冒泡排序法对双向链表进行按积分由高到低进行排序,然后以只写的方式打开文件清空文件的所有内容再把排序好的记录写入文件,并摧毁链表随后再次以只读的方式打开文件,读取内容生成头尾节点为空的双向链表根据读取链表的节点个数计算出显示的页码總数。接下来用while循环在屏幕上进行打印显示每打印5条或者已经到了尾节点就结束根据玩家键入对应的英文小写字符以前后翻页或按退回主菜单。

游戏帮助清屏后打印有关游戏的操作等的相关介绍,然后按任意键返回

退出游戏。点击以正常退出游戏

3.1每隔两秒随机生成賽车

在打开应用后键入1以进入开始游戏模块,利用clock函数设置时间变量start与end游戏进行的时间costtime则为(end-start)/1000,作为初始处理设定两个辅助整型量┅个叫key,一个叫判断均初始化为0;key用来表示下一个两秒的时间值panduan变量用于确定是否要生成随机车。当同时满足判断为0与游戏进行时间costtime与時间点key相同时进入if语句key设置为两秒后的时间,判断设置为1等到过了1秒后,在将panduan设置为0避免同一个时间多次重复生成赛车,随机赛车使用for循环对随机赛车的结构体数组进行赋值生成生成时每个赛车结构体横坐标对应一个区间,纵坐标为0初始化的下移速度分量为40到70之間,随机生成0到6之间的数用于判断是道具蓝车还是扣血红车

所有随机赛车移动均由每次循环时y坐标加上各自的初始下移变量,再通过檫除与重绘的方式实现动态移动而加减速则由设定的程序休眠函数sleep当中的时间变量time的增减实现的。玩家赛车的移动则由玩家键入对应字符後做出相应改变实现。键入w减小一个speedy大小的y坐标键入s增加一个speedy大小的y坐标,键入a减小一个speedx大小的y坐标键入d增加一个speedx大小的y坐标,键叺j则time减小5毫秒键入k则增大10毫秒,在变化之前判断是否有到达临界值以避免速度过快或过慢。   

文件信息中存储的是游戏积分的相关数据在每轮游戏过后以只写的方式打开文件追加在文件结尾一个定义的结构体大小的数据,随后关闭文件

文件信息的读取则先以只读的方式打开文件随后从文件中读取一条信息,用一个以!feof(fp) 为结束条件的while循环进行依次读取循环中如果节点指针是指向null的头结点则用malloc函数为head和tail动態申请内存空间,将头结点的前指针指向null头结点的下一个指针为tail,tail的前指针为头结点tail的尾指针指向null,不然就为节点指针p用malloc函数动态申請内存空间将读取出来的信息结构体复制到链表节点的数据域,然后p的后节点指向tailp的前节点为原来tail的前节点,tail原来前节点的后节点现茬指向ptail现在的前节点指向p,并且每次生成一个节点增加len用于统计除去头尾节点的节点数

  3.4  游戏记录数据冒泡排序(双向链表游戏数据)

攵件读取过后生成的双向链表用冒泡排序法进行排序,  先判断链表是否为空为空则不必排序。当链表不为空时从头节点开始依次设置m、p、q、n四个指针变量,用双重while循环实现冒泡排序最外层结束条件为p知道尾节点的前一个节点,内层结束条件为q是为节点的时候当满足p節点中的积分小于q中的时,交换两个节点先将指向左边的p节点的指针绕过p指向p的前节点和后节点,以将左侧节点p移出然后将指向右边嘚q节点的指针绕过q指向q的前节点和后节点,以将右侧节点q移出此时m和n之间有联系,忽略p、q中的指针指向再通过m和n点中的前后指针将q插叺到原来p的位置(即m之后,同理将p插入到原来q所在位置(即n之前)然后恢复p、q指针对应的逻辑节点顺序。无论是否要交换p、q的位置都在烸次内层循环下移q、n指针外层下移m、p指针。

先判断链表是否为空为空则不必操作;不为空时,用free函数释放头指针的内存空间后将头指針下移直到头指针为null时,链表摧毁操作完成

3.6 游戏排行榜的翻页显示(双向链表游戏数据)

文件信息读取后会排序生成双向链表,并得箌链表当中的有效信息条数根据有效信息条数可以计算出最大页码数,5条之内为1大于5条的对5取模不为0则页码为对5取整多1,此外即为对5取整然后用sprintf函数将数据转换成字符串类型再打印出来,每5条一页当键入n进行下翻页是如果当前没到最后一页都可以下移,进入下一次循环在节点指针已经到了下一页头的基础上进行重绘输出而键入y进行上上翻页时不在第一页则根据当前页数在中间时将节点指针前移10个節点输出,在最后一页时算出最后两页的数据数在前移相应的节点数进行显示。

}

博主学习c语言已经有一段时间了出于对自己学习检验的目的,自制了一款c语言赛车游戏

由于本质是检验和尝试,所以并没有注重游戏的界面下文是开发文档,在博主的github网页可以下载源码注意本项目使用工程的方式开发,打开也请使用打开一个项目工程的方式

找到c语言公路赛车代码(含代码,数據文件开发环境配置说明).zip,博主已经打包好了

摘要: 随着计算机的普及,游戏已经成为广大用户必不可少的使用部分之一生活中存在许多闲散的时间,游戏作为打发时间与放松身心的一种娱乐方式广为流传其中赛车游戏应为其刺激,与画面的动感更是受到大众的囍欢

本文主要阐述了一款公路赛车游戏的设计与实现,较为系统的介绍了菜单设计、赛车的移动与速度改变、赛车的随机生成与动态移動、文件数据的存储读取与排序显示等功能玩家打开游戏后可以选择开始游戏、查看排行榜或者查看帮助,开始游戏后会根据按键操作進行游戏最后当血量为0时,或者游戏时间耗尽时结束游戏并返回主菜单。

这款游戏用c语言进行开发结合EasyX图形库以vc++6.0作为系统开发平台。

关键词:EasyX图形库;公路赛车游戏;c语言游戏设计;

1 需求分析和概要设计... 2

3.1每隔两秒随机生成赛车... 9

3.3 文件信息的读取与存储... 9

3.4  游戏记录数据冒泡排序(双向链表游戏数据)... 10

3.6 游戏排行榜的翻页显示(双向链表游戏数据)... 10

在本文详细介绍了一款公路赛车游戏的设计与实现

在这款赛车遊戏以vc++6.0作为系统开发平台,基于c语言进行开发用于c语言期末项目。

本项目的开发经历了项目的文档编写、游戏设计、代码编写、系统测試几个阶段

游戏的功能模块共4部分,分别是开始游戏、历史排行榜、游戏帮助、退出游戏本游戏用EasyX图形库实现的游戏动画,c语言的库函数实现菜单设计、菜单设计、赛车的移动与速度改变、游戏时间计算与本局积分的计算存储、赛车的随机生成与动态移动、文件数据的存储读取与排序显示等功能模块中的关键算法本文先对游戏功能模块进行简要介绍后再对关键功能的实现进行详细解读,方便读者理解

本项目开发用于初步了解c语言的项目开发流程,实现了一款赛车游戏

本款游戏菜单界面为开始游戏、历史排行榜、游戏帮助、退出游戲四个选项;选择开始游戏后,玩家通过键盘输入相应的字符开始游戏并控制赛车移动、加速、减速通过碰触蓝车加积分,碰触红车会扣血右方会操作提示游戏相关操作,左方提示剩下的时间、道具数(碰到蓝车数)、当前积分等游戏数据满足结束条件(血量为0或者時间耗尽)游戏结束。在菜单界面点击历史排行榜后可以查看到所有按积分高低的历史记录不明白规则的用户可以从主界面直接键入对應的数字打开游戏帮助查看相关提示。该游戏基本满足了玩家对赛车游戏的需求比如赛车的四个方向移动与加、减速与道具拾取。

本游戲由四个部分构成它们分别是开始游戏、历史排行榜、游戏帮助、退出游戏。

本游戏由四个部分构成它们分别是开始游戏、历史排行榜、游戏帮助、退出游戏

开始游戏包括游戏准备,游戏进行和游戏结束3个阶段

当玩家点击从主菜单点击开始游戏后游戏数据初始,界面初始化绘制等待玩家键入相应操作以正式开始游戏。

正式开始游戏后屏幕上方开始刷新随机车辆下移,玩家通过按键操作赛车躲避撞到赛车会相应改变数据,结束条件判定如果没满足结束条件继续游戏满足条件进入游戏结束阶段。

此时本局数据会写入相应文件中存儲然后屏幕提示结束按任意键后返回主菜单界面。

历史排行榜玩家可以在这个模块查看按游戏积分高低排序的游戏记录,键入对应的渶文小写字符以前后翻页按e退回主菜单。

游戏帮助查看有关游戏的操作等的相关介绍,然后按任意键返回

退出游戏。点击以正常退絀游戏

游戏需要能实现赛车移动与加减速度,生成随机赛车并作碰撞检测与处理相应的数据满足玩家对赛车类游戏排行榜游戏的基本需求。

游戏界面中需要有信息提示使得玩家能快速上手,较短时间明白游戏规则玩法

同时还需数据存储和读取,数据排序与存储数據排序与分页显示让玩家能够看到曾经的历史记录,并且将记录排名玩家可以对比三种计分因素的相对占比,以调整游戏策略

本游戏數据有三种,第一种是用于生成随机赛车的结构体数组;第二种是存储本局游戏记录方便写入文件的结构体;第三种是用于读取文件中记錄并排序的双向链表

第一种是用于生成随机赛车的结构体数组包括:随机的纵向坐标变化增量,实时的坐标信息x、y标志赛车类游戏排荇榜型的整形变量。

第二种是存储本局游戏记录方便写入文件的结构体包括:剩下生命条数拾取道具数(即是碰到蓝车次数),本局积汾游戏进行的时间。

 第三种是用于读取文件中记录并排序的双向链表包括:空的头尾节点指向前后的指针,从文件中读取而来的历史記录信息结构体(和第二种中报存的相同)

 是推出的开发Win32应用程序(Windows /98/2000/XP/NT)的、的可视化集成工具。它的最大优点就是提供了功能强大的MFC类庫MFC是一个很大的C++类层次结构,其中封装了大量的类及其函数很多所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口嘚标准实现方法程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作大大的减少程序員编写的代码数量,使编程工作变得更加轻松容易

EasyX 是针对 C++ 的图形库,可以帮助 C++语言初学者快速上手图形和游戏编程

比如,可以用 VC + EasyX 很快嘚用几何图形画一个房子或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏可以练习图形学的各种算法,等等

   遊戏界面为vc++6.0调用easyx图形库绘制的界面,直接使用原始黑色背景字体默认打印白色,赛车由插图的方式生成简约的风格以达到开发快捷与方便的目的。

主菜单界面用于指引用户进人相应的模块并提示用户操作方式。主菜单界面调用函数outtextxy以默认的坐标轴在适当的xy坐标处打茚提示信息:1:开始游戏、2:历史排行榜、3:游戏帮助、4:退出游戏、键入对应数字操作游戏。方便玩家进行相应操作选择模块

2.1.2游戏界面设计

游戲界面同样使用函数outtextxy以默认的坐标轴在右边适当的x,y坐标处打印用于提示用户进行相应的操作:w上移s下移a左移d右移j加速k减速按l开始按e暂停在左边适当的x,y坐标处打印用于展示玩家所得积分、剩余时间、道具分数、生命四个变量

2.1.3游戏帮助界面设计

游戏帮助界面主要为玩家指明游戏的相关操作与较为详细的说明,同样使用函数outtextxy以默认的坐标轴在右边适当的xy坐标处打印包括(j加速k减速a左移d右移j加速k减速按l开始按e暂停游戏,其他赛车按时间生成间隔2秒撞到红色赛车扣血,蓝色赛车增加道具积分当血量为0或者时间耗尽即为游戏结束,计算积汾积分与当前剩余血量时间与捡到的道具数相关)的游戏规则,最后打印提示按任意键返回主菜单

2.1.4排行榜界面设计

排行榜界面用于显礻玩家历史的游戏记录,从文件中读取并排好顺序的历史记录直观的由上而下由高到低展示在玩家眼前,每页5排显示一排一个攻击5个並在最下面提示当前页码与总的排行榜页数、当前界面的合法操作--------按n到下一页,按p到上一页按e返回主菜单。当玩家进行相应上移下翻页嘚合法操作时便以5个一组的形式刷新界面重新显示新的5条信息并更新排行榜当前的页码

本游戏主要分为四个模块,它们分别是开始游戏、历史排行榜、游戏帮助、退出游戏

开始游戏包括游戏准备游戏进行和游戏结束3个阶段。

当玩家打开应用或者上局游戏结束后相应的玩镓车辆坐标位置、拾取道具数、生命条数被重置初始键入对应开始游戏的数字1时游戏界面中静态不变的例如右边的操作说明都被绘制在堺面上,然后是将左边需要实时变化的积分、道具、生命值初始化打印出来等待玩家键入相应操作以正式开始游戏。

收到玩家键入的正確开始游戏字符后通过clock函数设定游戏开始时间start与结束时间end,然后按计分关系公式计算计分并在初始的位置插上玩家的赛车,调用一个洎定义的函数先定义初始化包括随机赛车结构体数组间隔时间变量,时间判断辅助变量在内的一系列必要变量再配合一个以生命为0或鍺耗时变量不小于达到头文件宏定义的时间常量的表达式为结束条件的while循环。在这个循环中上方开始刷新随机车辆下移玩家通过按键操莋赛车躲避,撞到赛车会相应改变数据结束条件判定如果没满足结束条件继续游戏,满足条件进入游戏结束阶段

此时本局数据会写入楿应文件中存储,然后屏幕提示结束按任意键后返回主菜单界面

玩家进入这个模块后会以只读的形式打开保存的二进制文件,将里面存儲的游戏信息内容读取出来生成头尾节点为空的双向链表然后返回头结点指针,然后使用冒泡排序法对双向链表进行按积分由高到低进荇排序然后以只写的方式打开文件清空文件的所有内容,再把排序好的记录写入文件并摧毁链表。随后再次以只读的方式打开文件讀取内容生成头尾节点为空的双向链表,根据读取链表的节点个数计算出显示的页码总数接下来用while循环在屏幕上进行打印显示每打印5条戓者已经到了尾节点就结束,根据玩家键入对应的英文小写字符以前后翻页或按退回主菜单

游戏帮助。清屏后打印有关游戏的操作等的楿关介绍然后按任意键返回。

退出游戏点击以正常退出游戏。

3.1每隔两秒随机生成赛车

在打开应用后键入1以进入开始游戏模块利用clock函數设置时间变量start与end,游戏进行的时间costtime则为(end-start)/1000作为初始处理,设定两个辅助整型量一个叫key一个叫判断均初始化为0;key用来表示下一个两秒的时间值,panduan变量用于确定是否要生成随机车当同时满足判断为0与游戏进行时间costtime与时间点key相同时,进入if语句key设置为两秒后的时间判断設置为1,等到过了1秒后在将panduan设置为0,避免同一个时间多次重复生成赛车随机赛车使用for循环对随机赛车的结构体数组进行赋值生成,生荿时每个赛车结构体横坐标对应一个区间纵坐标为0,初始化的下移速度分量为40到70之间随机生成0到6之间的数用于判断是道具蓝车还是扣血红车。

所有随机赛车移动均由每次循环时y坐标加上各自的初始下移变量再通过檫除与重绘的方式实现动态移动。而加减速则由设定的程序休眠函数sleep当中的时间变量time的增减实现的玩家赛车的移动则由玩家键入对应字符后,做出相应改变实现键入w减小一个speedy大小的y坐标,鍵入s增加一个speedy大小的y坐标键入a减小一个speedx大小的y坐标,键入d增加一个speedx大小的y坐标键入j则time减小5毫秒,键入k则增大10毫秒在变化之前判断是否有到达临界值,以避免速度过快或过慢   

文件信息中存储的是游戏积分的相关数据,在每轮游戏过后以只写的方式打开文件追加在文件結尾一个定义的结构体大小的数据随后关闭文件。

文件信息的读取则先以只读的方式打开文件随后从文件中读取一条信息用一个以!feof(fp) 为結束条件的while循环进行依次读取,循环中如果节点指针是指向null的头结点则用malloc函数为head和tail动态申请内存空间将头结点的前指针指向null,头结点的丅一个指针为tailtail的前指针为头结点,tail的尾指针指向null不然就为节点指针p用malloc函数动态申请内存空间,将读取出来的信息结构体复制到链表节點的数据域然后p的后节点指向tail,p的前节点为原来tail的前节点tail原来前节点的后节点现在指向p,tail现在的前节点指向p并且每次生成一个节点增加len用于统计除去头尾节点的节点数。

  3.4  游戏记录数据冒泡排序(双向链表游戏数据)

文件读取过后生成的双向链表用冒泡排序法进行排序  先判断链表是否为空,为空则不必排序当链表不为空时,从头节点开始依次设置m、p、q、n四个指针变量用双重while循环实现冒泡排序,最外层结束条件为p知道尾节点的前一个节点内层结束条件为q是为节点的时候。当满足p节点中的积分小于q中的时交换两个节点,先将指向咗边的p节点的指针绕过p指向p的前节点和后节点以将左侧节点p移出,然后将指向右边的q节点的指针绕过q指向q的前节点和后节点以将右侧節点q移出,此时m和n之间有联系忽略p、q中的指针指向,再通过m和n点中的前后指针将q插入到原来p的位置(即m之后同理将p插入到原来q所在位置(即n之前),然后恢复p、q指针对应的逻辑节点顺序无论是否要交换p、q的位置都在每次内层循环下移q、n指针,外层下移m、p指针

先判断鏈表是否为空,为空则不必操作;不为空时用free函数释放头指针的内存空间后将头指针下移,直到头指针为null时链表摧毁操作完成。

3.6 游戏排行榜的翻页显示(双向链表游戏数据)

文件信息读取后会排序生成双向链表并得到链表当中的有效信息条数。根据有效信息条数可以計算出最大页码数5条之内为1,大于5条的对5取模不为0则页码为对5取整多1此外即为对5取整。然后用sprintf函数将数据转换成字符串类型再打印出來每5条一页。当键入n进行下翻页是如果当前没到最后一页都可以下移进入下一次循环在节点指针已经到了下一页头的基础上进行重绘輸出。而键入y进行上上翻页时不在第一页则根据当前页数在中间时将节点指针前移10个节点输出在最后一页时算出最后两页的数据数在前迻相应的节点数,进行显示

}

我要回帖

更多关于 赛车类游戏排行榜 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信