【c语言】小游戏程序——弹跳小球

现在说一下其中一个最简单的小程序:弹跳小球———————————————LINE————————————————首先我们知道,在窗口的坐标系原点是在窗口左上角的,如图所示然后我们如果想在这个坐标系里面的某个点上画出一个小球,那么它的坐标系应该就是这样的转换到c语言的思维的话:X0既是打印…

大家好,又见面了,我是你们的朋友全栈君。

现在说一下其中一个最简单的小程序:弹跳小球

———————————————LINE————————————————

首先我们知道,在窗口的坐标系原点是在窗口左上角的,如图所示

                      【c语言】小游戏程序——弹跳小球

然后我们如果想在这个坐标系里面的某个点上画出一个小球,那么它的坐标系应该就是这样的

                      【c语言】小游戏程序——弹跳小球

转换到c语言的思维的话:X0既是打印出X0个空格,Y0既是打印出Y0个“\n”!!!!

                                                SO

                                                                                 代码如下


#include <stdio.h>
#include <stdlib.h>

int main()
{

	int i,j;
    int x = 30;
    int y = 10;

		system("cls");
	  
		for(j=0;j<y;j++)
		{
			printf("\n");
		}

		for(i=0;i<x;i++)
		{
			printf(" ");
		}
			printf("O\n");

	return 0;
}

​

                                                                      ↓↓↓↓编译好的效果就像这样↓↓↓↓

                        【c语言】小游戏程序——弹跳小球

                                                       如果想让小球往上(往下)运动要怎么办呢?

我们看前面的那个图就可以知道,只要X轴保持不变,Y轴往上做减法就可以完成,所以

#include <stdio.h>
#include <stdlib.h>

int main()
{

	int i,j;
    int x = 30;
    int y = 10;

	for(int z=10;z>=y;y--)
	{
		system("cls");
	  
		for(j=0;j<y;j++)
		{
			printf("\n");
		}

		for(i=0;i<x;i++)
		{
			printf(" ");
		}
			printf("O\n");
	}

	return 0;
}

从运行效果中可以知道,小球会一直往上运动,没有停止

                  【c语言】小游戏程序——弹跳小球

                                           为什么呢?

                                               因为我们没有设定边界,所以球碰到边缘也不会停止

                                                   所以我们在程序中加入两个变量:顶部和底部

int TOP = 1;
int Bottom = 10;

 并且规定当小球达到窗口的顶部和底部时做反方向运动

但在做反方向运动时,需要有个和正常运动相反的速度,所以加入一个变量:速度

int speed = 1;

在正常运动时,speed变量为正数,当触碰边缘时,speed变量为负数,使得小球反方向运动

int speed =1;

if(y > Bottom || y < TOP)
		{
			speed = -speed;
		}

		y = y - speed;

                                                                 根据效果图可知,小球在做上下来回跳动

                    【c语言】小游戏程序——弹跳小球

       由此可知,如果想上下左右跳动,只需在Y轴上也增加左右边界,使得触碰到左右边界的时候小球做相反方向运动,即可完成小程序的初步效果,实现出小球来回跳动的效果。

                                               源码如下

#include <stdio.h>
#include <stdlib.h>

int main()
{

	int i,j;
    int x = 30;
    int y = 10;

	int TOP = 1;
	int Bottom = 10;

	int Left = 0;
	int Right = 50;

	int speed_x = 1;
	int speed_y = 1;

	while(1)
	{
		
		if(y>Bottom || y<TOP)
		{
			speed_y = -speed_y;
		}

		if(x<Left || x>Right)
		{
			speed_x = -speed_x;
		}

		x = x - speed_x;
		y = y - speed_y;

		system("cls");
	  
		for(j=0;j<y;j++)
		{
			printf("\n");
		}

		for(i=0;i<x;i++)
		{
			printf(" ");
		}
			printf("O\n");
	}

	return 0;
}

PS:如果觉得小球跳动速度太快,可以添加一些延时代码令小球速度减缓,具体可自行百度

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124622.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 通俗易懂讲解均方误差 (MSE)「建议收藏」

    通俗易懂讲解均方误差 (MSE)「建议收藏」测量预测值与某些真实值匹配程度。MSE通常用作回归问题的损失函数。例如,根据其属性估算公寓的价格。这是维基百科中定义的均方误差(MSE)公式。它代表了一个非常简单的概念,但如果您刚开始使用ML,可能不太容易读懂。让我们从内而外拆开包装。MSE计算模型的预测Ŷ与真实标签Y的接近程度。您希望误差变为0。如果您预测房价,误差可能是预测价格与实际价格之间的差异。从标签中减去预测是行不通的。误差可能为负也可能为正,这是对样本求和时的问题。您可以取绝对值或误差的平方。取平方有一个特性,它惩罚更大的

    2022年9月30日
    0
  • 沃舍尔算法求传递闭包_离散数学传递闭包

    沃舍尔算法求传递闭包_离散数学传递闭包给定 n 个变量和 m 个不等式。其中 n 小于等于 26,变量分别用前 n 的大写英文字母表示。不等式之间具有传递性,即若 A>B 且 B>C,则 A>C。请从前往后遍历每对关系,每次遍历时判断:如果能够确定全部关系且无矛盾,则结束循环,输出确定的次序;如果发生矛盾,则结束循环,输出有矛盾;如果循环结束时没有发生上述两种情况,则输出无定解。输入格式输入包含多组测试数据。每组测试数据,第一行包含两个整数 n 和 m。接下来 m 行,每行包含一个不等式,不等式全部为小于关系

    2022年8月10日
    12
  • 需求规格说明书是给谁看的(需求规格说明书是谁写的)

    写在前面如果你明确清晰知道需求规格说明书是什么,则可以忽略此文章。如果你不清晰,建议还是阅读一下本文,不然也许早晚会碰钉子。转载请标明出处:http://blog.csdn.net/ouyida3/article/details/46045261本文出自:【ouyida3的博客】起因最近在做项目时,根据项目计划,在用户输出了《需求书》后,需要我在2天编写出《需求规格说明书》,但是就这个说明

    2022年4月11日
    93
  • iOS关于地图定位基础(二)[通俗易懂]

    iOS关于地图定位基础(二)[通俗易懂]在前一篇文章 iOS关于地图定位基础(一) 中我们主要总结了 iOS里面利用原生 CoreLocation 框架实现基本定位功能和一些注意点,侧重点主要是iOS8+之后的定位授权与授权状态的使用。接下来本篇文章主要是讲解如何利用 CoreLocation 框架实现地理定位的具体实现。(PS:下文涉及我自定义的指南针Demo请去我的GitHub仓库查看源码https://github.com/IML

    2022年7月26日
    3
  • api接口开放平台_手机系统分享接口在哪里

    api接口开放平台_手机系统分享接口在哪里免费在线接口(资源链接)1.csdnhttps://blog.csdn.net/c__chao/article/details/785737372.sojsonhttps://www.sojson.com/api/3.bejsonhttp://www.bejson.com/knownjson/webInterface/4.csdnhttps://blog.csdn.net/ishxiao/article/details/528573615.juhe(部分免费)https://www.j

    2022年10月3日
    0
  • vscode中好用的插件_捷达VS5和捷途X95哪个好

    vscode中好用的插件_捷达VS5和捷途X95哪个好AutoRenameTag自动重命名配对的HTML/XML标签AutoCloseTag自动添加HTML/XML结束标签BracketPairColorizer高亮匹配代码块括号CodeRunner非常强大的一款插件,能够运行多种语言的代码片段或代码文件:C,C++,Java,JavaScript,PHP,Python,Perl,Ruby,Go等等,安装完……

    2022年9月28日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号