C++图形开发(10):移动的方块

这篇具有很好参考价值的文章主要介绍了C++图形开发(10):移动的方块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.引入

那么我们今天就来实现一下矩形的移动
注意:本篇文章的内容都是基于此前用空格控制的小球的基础上进行开发的,详见:C++图形开发(8):空格键控制小球起跳
先来回忆下之前的代码吧~

#include<graphics.h> 
#include<conio.h>
#include<stdio.h>

int main() {
	double width, height;//定义画面长度、宽度
	width = 600;
	height = 400;
	initgraph(width, height); 
	double ball_x, ball_y,ball_vy, r,g;//定义小球x轴、y轴、y轴方向的速度、半径、重力加速度
	g = 0.6;
	r = 20;
	ball_x = width / 4;//x坐标等于整个画面x轴长度的四分之一
	ball_y = height - r;//y坐标等于画面的y轴长度减去圆的半径(保证圆在画面的最底端)
	ball_vy = 0; //最初小球落在地面上时y轴方向的速度为0
	while (1){
		if (_kbhit()) {
			char input = _getch();
			if (input == ' ') {
				ball_vy = -16;
			}
		}
		ball_vy = ball_vy + g;//根据牛顿力学定律得
		ball_y = ball_y + ball_vy;//小球y轴方向的变化
		if (ball_y >= height - r) {
			ball_vy = 0;//小球落地以后速度清零
			ball_y = height - r;
		}
		cleardevice();
		fillcircle(ball_x, ball_y, r);
		Sleep(10);
	}
	_getch();
	closegraph();
	return 0;
}

2.静止的方块

首先我们要定义所需的变量:

double rect_left_x, rect_top_y, rect_width, rect_height;

这几个变量的含义:
C++图形开发(10):移动的方块,C++图形开发,C++,编程,c++,开发语言
①:rect_left_x
②:rect_top_y
③:rect_width
④:rect_height

那么接下来我们就来给这些变量赋一下值:(这里建议按我的方法赋,来实现最终呈现的效果可以随整个屏幕宽度、长度的变化而进行自适应)

rect_width = 20;
rect_height = 100;
rect_left_x = width * 3 / 4;
rect_top_y = height - rect_height;

3.移动的方块

我们已经实现了按下空格键使小球跳起,接下来我们就来实现方块的移动

接下来我们定义一个变量来控制方块的x轴方向的移动速度(当然,方块也不会涉及到y轴方向的移动速度):

double rect_vx = -3;

再把方块的移动加上,整段代码就是:

#include<graphics.h> 
#include<conio.h>
#include<stdio.h>

int main() {
	double width, height;//定义画面长度、宽度
	width = 600;
	height = 400;
	initgraph(width, height); 

	double ball_x, ball_y,ball_vy, r,g;//定义小球x轴、y轴、y轴方向的速度、半径、重力加速度
	g = 0.6;
	r = 20;
	ball_x = width / 4;//x坐标等于整个画面x轴长度的四分之一
	ball_y = height - r;//y坐标等于画面的y轴长度减去圆的半径(保证圆在画面的最底端)
	ball_vy = 0; //最初小球落在地面上时y轴方向的速度为0

	double rect_left_x, rect_top_y, rect_width, rect_height;//定义方块的各个位置变量
	rect_width = 20;
	rect_height = 100;
	rect_left_x = width * 3 / 4;
	rect_top_y = height - rect_height;

	double rect_vx = -3;//定义方块的移动速度
	while (1){
		if (_kbhit()) {
			char input = _getch();
			if (input == ' ') {
				ball_vy = -16;
			}
		}
		ball_vy = ball_vy + g;//根据牛顿力学定律得
		ball_y = ball_y + ball_vy;//小球y轴方向的变化
		if (ball_y >= height - r) {
			ball_vy = 0;//小球落地以后速度清零
			ball_y = height - r;
		}
		rect_left_x = rect_left_x + rect_vx;
		cleardevice();
		fillrectangle(rect_left_x, height - rect_height, rect_left_x + rect_width, height);
		fillcircle(ball_x, ball_y, r);
		Sleep(10);
	}
	_getch();
	closegraph();
	return 0;
}

当然,或许你已经发现了,这样的方块从右向左运动到头就会消失,因此,我们要向之前的小球一样,加一个if-else语句:

if (rect_left_x <= 0) {
	rect_left_x = width;
}

那么完整的代码就是:

#include<graphics.h> 
#include<conio.h>
#include<stdio.h>

int main() {
	double width, height;//定义画面长度、宽度
	width = 600;
	height = 400;
	initgraph(width, height); 

	double ball_x, ball_y,ball_vy, r,g;//定义小球x轴、y轴、y轴方向的速度、半径、重力加速度
	g = 0.6;
	r = 20;
	ball_x = width / 4;//x坐标等于整个画面x轴长度的四分之一
	ball_y = height - r;//y坐标等于画面的y轴长度减去圆的半径(保证圆在画面的最底端)
	ball_vy = 0; //最初小球落在地面上时y轴方向的速度为0

	double rect_left_x, rect_top_y, rect_width, rect_height;//定义方块的各个位置变量
	rect_width = 20;
	rect_height = 100;
	rect_left_x = width * 3 / 4;
	rect_top_y = height - rect_height;

	double rect_vx = -3;//定义方块的移动速度
	while (1){
		if (_kbhit()) {
			char input = _getch();
			if (input == ' ') {
				ball_vy = -16;
			}
		}
		ball_vy = ball_vy + g;//根据牛顿力学定律得
		ball_y = ball_y + ball_vy;//小球y轴方向的变化
		if (ball_y >= height - r) {
			ball_vy = 0;//小球落地以后速度清零
			ball_y = height - r;
		}
		rect_left_x = rect_left_x + rect_vx;
		if (rect_left_x <= 0) {
			rect_left_x = width;//方块消失以后重新出现
		}
		cleardevice();
		fillrectangle(rect_left_x, height - rect_height, rect_left_x + rect_width, height);
		fillcircle(ball_x, ball_y, r);
		Sleep(10);
	}
	_getch();
	closegraph();
	return 0;
}

效果:
C++图形开发(10):移动的方块,C++图形开发,C++,编程,c++,开发语言文章来源地址https://www.toymoban.com/news/detail-546968.html

到了这里,关于C++图形开发(10):移动的方块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 教你用JavaScript实现键盘控制小方块移动

    欢迎来的我的小院,我是霍大侠,恭喜你今天又要进步一点点了! 我们来用JavaScript编程实战案例,做一个键盘控制小方块移动的案例。该案例主要实现通过按下键盘的上下左右按钮来控制小方块在页面中的移动。通过实战我们会学习到position定位,键盘监听事件以及动态给

    2024年02月09日
    浏览(31)
  • 咸虾米之一些快捷方式的操作,一行方块的左右滑动,方块在一区域内的任意移动

    由于本着只学习微信小程序的目的,上面的几篇博文都是跟着黑马程序的课程走的!后面的就讲解uni-app的实验呢!一个人的精力是有限的,于是换了们课程继续深造微信小程序!!!     以下是在 .wxml中的一些  以下是view三层嵌套的快捷操作方式! .box.inner.row 最外层是 c

    2024年02月11日
    浏览(27)
  • 《Python多人游戏项目实战》第一节 简单的方块移动

    目录 1.1 设置游戏窗口 1.2 绘制一个方块 1.3 编写服务端代码 1.4 完善客户端代码 1.5 完整代码下载地址 在本节,我们将通过一个简单的方块移动程序进入多人联机游戏的大门。每个玩家打开游戏窗口后都可以控制一个方块,当某个玩家移动方块后,其余玩家的窗口上会自动更

    2023年04月19日
    浏览(24)
  • Unity3D制作一个会移动的方块(还不会移动照相机)

    学习 Unity3D 这么久了,如果你还不会制作一个按下 WASD 就可以移动的方块的话,那么你的学习将没有一点成就感,我学习的时候,我决定 先学习移动 ,这样我就会对 Unity 更加感兴趣,学习起来的动力会更为充足 先创建一个项目,名为move,如果你手头有一个随便乱用的项目

    2024年02月14日
    浏览(36)
  • C++图形开发(1):graphics图形库简介与安装

    为了帮助大家实现真正的、更有意思的C++开发,本人决定开一个C++图形开发的专栏,来制作更多的有意思的游戏、程序。 首先我们要了解的,就是控制台和图形库之间的区别: 控制台是一种基于字符的显示方式,它使用文本字符来组成屏幕上的图像。它通常用于命令行界面

    2024年02月12日
    浏览(45)
  • 计算机图形学与opengl C++版 学习笔记 第10章 增强表面细节

    假设我们想要对不规则表面的物体进行建模,例如橘子凹凸的表皮、葡萄干褶皱的表面或月球的陨石坑表面。我们该怎么做?到目前为止,我们已经学会了两种可能的方法: (a)我们可以对整个不规则表面进行建模,但这么做通常不切实际(一个有许多坑的表面需要大量的

    2024年02月09日
    浏览(34)
  • C++图形开发(4):下落的小球

    首先,我们来使小球自上而下依次出现: 分析 :要使小球自上而下依次出现,也就是指在一个小球出现之后让程序暂停一段时间,再执行下一步操作。 这就需要用到Sleep()函数了 Sleep()函数的作用是使当前线程暂停执行一段时间,让出CPU给其他线程或进程使用,以达到节约资

    2024年02月12日
    浏览(30)
  • 【VRTK】【VR开发】【Unity】10-连续移动

    https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 连续移动与瞬移有如下不同: 连续移动不容易打断沉浸 对于新手或者不适应者来说更容易晕动 我对玩家的建议:连续移动前后左右可以用摇杆,转向用自己物理转向不容易晕动且有最佳沉浸感。 这次采用与之前

    2024年02月02日
    浏览(36)
  • C++图形开发(3):静止的小球(fillcircle函数)

    要实现在图形界面得到一个小球,我们的graphics库提供了一个函数: 其格式为: 现写一段代码,在图形界面生成一个小球: 效果: 坐标图: 如果是多个小球呢? 效果: 坐标图: 可不可以在上面的基础上增加一些花样呢? 我们先把设计图画出来:(本人字丑,请忽略) 代码

    2024年02月12日
    浏览(27)
  • C++图形开发(8):空格键控制小球起跳

    我们今天来实现下按下空格键控制小球的起跳( 还没阅读之前文章的同学可以先去阅读一下:C++图形开发专栏) 首先,我们要绘制小球,这里就不细讲啦,之前的文章里都有,新内容看一下注释: 运行效果: 我们要让小球跳起来,其实就是让小球y方向的坐标发生变化,如

    2024年02月12日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包