云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 完整word版,C语言课程设计 - 桌球 - 图文

完整word版,C语言课程设计 - 桌球 - 图文

  • 62 次阅读
  • 3 次下载
  • 2026/1/3 0:38:50

C语言课程设计--桌球

一、实验内容

玩家通过移动球杆到单一的桌球处碰撞桌球运动,当桌球于一定速度通过桌面右方的同样颜色的球洞后,则该球进洞,在桌面左边重新分配新球开始游戏。要求如下:

1. 游戏的初始界面如下,其中左边有一个体积较小的桌球,其x方向位置固定,y方

向位置随机。右边有八个颜色不一样,体积较大的球洞,游戏的目的是使用左边的桌球以一定小的速度穿过右边同样颜色的球洞就算桌球进洞,然后重新分配新球。

2. 3.

4. 5.

球杆随鼠标运动而运动,单击球杆,桌球获取一个前进的速度同时往前有运动。桌球的前进方向有一段指示球运动方向的虚线。

右侧的球洞以移动的频率不断更换位置。球洞的x左边不变,更换的是y坐标的位置,即每一轮中每一个球洞移动到下一个球洞的位置,最下边的球洞则移动到第一个球洞位置。所以的这些动作都要在一个频率的时间里面完成。因此当游戏一某一个频率进行的时候,右侧的球洞就能实现循环变化的效果。 球碰撞到桌面边沿的时候以发射角的角度弹走。

球进洞的判断是球以一定的速度通过同样颜色的球洞时,桌球消失,表明球进洞了,此时左侧随机生成新球。球运动到球洞的速度不能太大,太大则球直接运动过球洞,如果速度太小,则球同样不进洞。

二、实验指南

实验一开始实验

【实验任务】

步骤一、打开FunCode,创建一个的C++语言项目; 步骤二、导入snooker模板。

【实验思路】 按实验指导完成。

【实验指导】

1、 打开FunCode,点击“项目”菜单,选择“创建C语言工程”

注意:工程名名称要求字母开头,只能包含字母和数字,且名字中间不能有空格。 2、 点击菜单“项目”中的“导入地图模块”,如图一。跳出一个对话框,选中“snooker”

模板,点击“导入到工程”按钮,如图二。

图 一 图 二 3、导入成功后的,界面如下图所示:

实验二初始化桌球和球杆同时在球的前进方向画虚线

【实验内容】

步骤一、设置球的初始位置,球杆的初始朝向 步骤二、设置球杆随鼠标移动 步骤三、在球的前进方向上画虚线

【实验思路】

在设置初始球的时候要考虑随机本局的球数字,如果和上一局的不一致,则将上局的球拉到屏幕外,将本局的球拉到屏幕内,在Y向上随机摆放球的出生位置,只随机Y方向坐标,不动X方向。对于球杆则通过系统的dOnMouseMove函数获取到鼠标移动时的坐标位置,然后使用dSetSpritePosition函数同步设置桌球精灵的位置。通过获取球的X和Y坐标,并求两个坐标平方和的平方根来得到球运动方向向量的大小,利用循环调用系统画线函数画虚线。

【实验指导】

1. 在Main.cpp中,初始化几个全局变量,代码如下:

// 游戏玩法设计:上方有8个球洞,分别是数字0-7,球洞间的数字按一定速率滚 // 动,每局球都随机一个0-7的数字,对应的数字打入对应的球洞才胜利,开始打球 // 状态

g_iPlayState = 0; g_fRotateTime

= 0.f;

g_fHoleRollTime = 0.f; 2. 初始化精灵:

// 使用循环,给数组赋值:

// 将数组的8个值分别赋值0-7即可,无需随机。名字使用dMakeSpriteName分 //

别产生,为BallHole0 - BallHole7

// 球洞精灵预先摆放在场景中,因此不需要创建 int iLoop = 0;

for( iLoop = 0; iLoop < 8; iLoop++ ) { }

3. 在Main.cpp中填写球和球杆的初始化代码。

// 随机本局的球数字,如果和上一局的不一致,则将上局的球拉到屏幕外,将本 // 局的球拉到屏幕内

int iNewBallNumber = dRandomRange( 0, 7 ); if( iNewBallNumber != g_iBallNumber ) { }

// 在Y向上随机摆放球的出生位置,只随机Y方向坐标,不动X方向 int iPosY

=

dRandomRange( -25, 25 );

dSetSpritePositionY( g_szBallName, 50.f ); // 新球,移动到屏幕中 g_iBallNumber

=

iNewBallNumber;

g_iHoleNumber[iLoop] =

iLoop;

strcpy( g_szHoleName[iLoop], dMakeSpriteName( \

strcpy( g_szBallName, dMakeSpriteName(\dSetSpritePositionX( g_szBallName, -30.f );

dSetSpritePositionY( g_szBallName, (float)iPosY ); // 获取球拍的初始朝向,只做一次 static int iInited = 0; if( !iInited ) { }

4. 设置球杆随鼠标移动而移动。首先通过系统的dOnMouseMove函数实时获取到鼠标

移动的坐标位置参数,然后将该参数传给球杆精灵的dSetSpritePosition函数,这样就能让球杆随鼠标移动了。由于鼠标在地图中有自己的图标,因此我们需要调用系统的隐藏鼠标的函数ShowCursor将鼠标隐藏掉。实现步骤如下:

1) 在Main.cpp中添加我们自己定义的OnMouseMove函数的定义:

void CGameMain::OnMouseMove( const float fMouseX, const float fMouseY ) iInited

=

1;

=

dGetSpriteRotation( \

g_fOldRotation

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

C语言课程设计--桌球 一、实验内容 玩家通过移动球杆到单一的桌球处碰撞桌球运动,当桌球于一定速度通过桌面右方的同样颜色的球洞后,则该球进洞,在桌面左边重新分配新球开始游戏。要求如下: 1. 游戏的初始界面如下,其中左边有一个体积较小的桌球,其x方向位置固定,y方向位置随机。右边有八个颜色不一样,体积较大的球洞,游戏的目的是使用左边的桌球以一定小的速度穿过右边同样颜色的球洞就算桌球进洞,然后重新分配新球。 2. 3. 4. 5. 球杆随鼠标运动而运动,单击球杆,桌球获取一个前进的速度同时往前有运动。桌球的前进方向有一段指示球运动方向的虚线。 右侧的球洞以移动的频率不断更换位置。球洞的x左边不变,更换的是y坐标的位置,即每一轮中每一个球洞移动到下一个球洞的位

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com