前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【c语言】小游戏程序——弹跳小球

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

作者头像
全栈程序员站长
发布2022-07-21 14:07:58
1.4K0
发布2022-07-21 14:07:58
举报

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

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

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

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

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

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

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

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

SO

代码如下

代码语言:javascript
复制
#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语言】小游戏程序——弹跳小球
【c语言】小游戏程序——弹跳小球

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

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

代码语言:javascript
复制
#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语言】小游戏程序——弹跳小球
【c语言】小游戏程序——弹跳小球

为什么呢?

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

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

代码语言:javascript
复制
int TOP = 1;
int Bottom = 10;

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

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

代码语言:javascript
复制
int speed = 1;

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

代码语言:javascript
复制
int speed =1;

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

		y = y - speed;

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

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

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

源码如下

代码语言:javascript
复制
#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.cn/124622.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月3,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ———————————————LINE————————————————
  • SO
  • 为什么呢?
  • 源码如下
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档