目录

前言

正文

一、显示静止的小球

二、小球下落

三、上下弹跳的小球

四、斜着弹跳的小球

五、控制小球弹跳的速度

六、完整代码

写在最后


前言

我们利用printf 函数实现一个在屏幕上弹跳的小球,如图所示。弹跳的小球游戏比较简单、容易入门,也是反弹球消砖块、接金币、台球等很多游戏的基础。

完成游戏前需要掌握的语法知识:标识符、变量、常量、运算符与表达式,以及 printf、scanf、if-else、while、for 语句的用法。

正文部分我们会逐步进行讲解,前一部分是后一部分的基础,大家不要跳过阅读。

正文

一、显示静止的小球

首先利用 printf 函数在屏幕坐标(x,y)处显示一个静止的小球字符'o',注意屏幕坐标系的原点在左上角,如图

​
#include<stdio.h>
int main()
{int i,j;int x=5;int y=10;//输出小球上面的空行 for(i=0;i<x;i++)printf("\n");//输出小球左边的空格   for(j=0;j<y;j++)printf(" ");printf("o");//输出小球 printf("\n");return 0;} ​

二、小球下落

改变小球的坐标变量,即让小球的i坐标增加,从而让小球下落。在每次显示之前使用了清屏函数system("cls"),注意需要包含新的头文件#include<stdlib.h>。

#include<stdio.h>#include<stdlib.h>int main(){int i,j;int x=1;int y=10;for(x=1;x<10;i++){system("cls");//清屏函数//输出小球上面的空行 for(i=0;i<x;i++)printf("\n");//输出小球左边的空格   for(j=0;j<y;j++)printf(" ");printf("o");//输出小球 printf("\n");   return 0;}return 0;}

三、上下弹跳的小球

上一步代码的基础上增加记录速度的变量 velocity,小球的新位置x=旧位置x+速度velocity。当判断小球到达上、下边界时改变方向,即改变velocity 的正负号

#include<stdio.h>#include<stdlib.h>int main(){int i,j;int x=5;int y=10;int height=20;int velocity=1;while(1){x=x+velocity;system("cls");// 清屏函数//输出小球上面的空行 for(i=0;i<x;i++)printf("\n");//输出小球左边的空格    for(j=0;j<y;j++)printf(" ");//输出小球 printf("o");printf("\n");   if(x==height)velocity=-velocity;if(x==0)velocity=-velocity;}return 0;}

四、斜着弹跳的小球

下面让程序更有趣,使小球斜着弹跳,主要思路是增加x、y两个方向的速度控制变量velocity_x、velocity_y,初值为1;velocity_x碰到上、下边界后改变正负号,velocity_y碰到左、右边界后改变正负号。

 #include<stdio.h>#include<stdlib.h>int main(){int i,j;int x=0;int y=5;int velocity_x=1;int velocity_y=1;int left=0;int right=20;int top=0;int bottom=10;while(1){x=x+velocity_x;y=y+velocity_y;system("cls");//for(i=0;i<x;i++)printf("\n");//   for(j=0;j<y;j++)printf(" ");printf("o");printf("\n");   if(x==top||x==bottom)velocity_x=-velocity_x;if(y==left||y==right)velocity_y=-velocity_y;}return 0;}

五、控制小球弹跳的速度

以上反弹球的速度可能过快,为了降低反弹球的速度,以使用Sleep 函数(#include<windows.h>)。比如 sleep(10)表示程序执行到此处暂停 10ms,从而控制小球弹跳的速度。

六、完整代码

 #include<stdio.h>#include<stdlib.h>#include<windows.h>int main(){int i,j;int x=0;int y=5;int velocity_x=1;int velocity_y=1;int left=0;int right=20;int top=0;int bottom=10;while(1){x=x+velocity_x;y=y+velocity_y;system("cls");//for(i=0;i<x;i++)printf("\n");//   for(j=0;j<y;j++)printf(" ");printf("o");printf("\n"); Sleep(10);  if(x==top||x==bottom)velocity_x=-velocity_x;if(y==left||y==right)velocity_y=-velocity_y;}return 0;}

写在最后

【C语言】简易版_反弹小球游戏相关推荐

  1. 【C语言】简易版_飞机小游戏

    目录 前言 正文 一.利用scanf控制飞机移动 二.getch控制飞机移动 三.显示复杂的飞机图案 四.发射激光 五.打靶练习 写在最后 前言 在前面弹跳小球 的基础上实现一个简单的飞机游戏,主要包 ...

  2. c语言小球反弹的编程,少儿创意编程scratch一反弹小球游戏教程

    亲爱的小朋友,相信你们都玩过很多小游戏呢.那么你们有没有想过自己是否会做小游戏呢?不管答案是会或者不会,今天小编姐姐就告诉你,做小游戏so easy,你一样可以编出好玩的小游戏呢!来,我们一起进入今天 ...

  3. python贪吃蛇最简单代码_利用python实现简易版的贪吃蛇游戏(面向python小白)

    引言 作为python 小白,总是觉得自己要做好百分之二百的准备,才能开始写程序.以至于常常整天在那看各种语法教程,学了几个月还是只会print('hello world'). 这样做效率太低,正确的 ...

  4. 利用python实现简易版的贪吃蛇游戏(面向python小白)

    前言 这篇文章主要给大家介绍了关于如何利用python实现简易版的贪吃蛇游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学 ...

  5. c语言程序设计黑白棋游戏,C语言课程设计_黑白棋游戏

    C语言课程设计_黑白棋游戏 C语言课程设计_黑白棋游戏 #include "graphics.h" /*图形系统头文件*/ #define LEFT 0x4b00 /*光标左键值* ...

  6. 【C语言】进阶版_飞机小游戏

    目录 前言 一.代码重构 二.新式子弹代替激光 三.优化敌方战机 四.增加积分模块 五.更好的清屏功能 写在最后 前言 没有学习函数,以上功能都在main()中实现是有点痛苦的.在学了函数之后会模块化 ...

  7. 基于JAVA实现简易版泡泡堂小游戏

    一.简介--童年记忆 <泡泡堂>是由韩国游戏公司Nexon开发的一款休闲游戏(Casual Game),于2003年在中国大陆上线,由盛大网络运营.游戏讲述了在哈巴森林的一个村落的村民们利 ...

  8. [源码和文档分享]基于JAVA实现简易版泡泡堂小游戏

    一.简介--童年记忆 <泡泡堂>是由韩国游戏公司Nexon开发的一款休闲游戏(Casual Game),于2003年在中国大陆上线,由盛大网络运营.游戏讲述了在哈巴森林的一个村落的村民们利 ...

  9. 【C语言】豪华版_飞机小游戏

    目录 前言 一.飞机显示与控制 二.发射子弹 三.击中敌机 四.多台敌机 五.发射散弹 写在最后 前言 这是飞机游戏的第三版,我们已经实现了基础版和进阶版的飞机游戏  ,但是存在的问题很明显:已经发射 ...

最新文章

  1. Webex远程网络视频会议使用指南
  2. oracle, to_char(), to_number, ORA_01722
  3. CMap在用CString做key类型时,ARG_KEY要选LPCTSTR
  4. 关于 SAP Spartacus OAuth 2.0 Resource Owner Password Flow 实现的一些讨论
  5. IntelliJ IDEA 如何设置编辑窗口的背景图片
  6. K8S的HelloWorld之旅
  7. redis 如何 mysql_Redis 如何保持和 MySQL 数据一致
  8. Python 竟能绘制如此酷炫的三维图
  9. Python定义函数及引用
  10. Hibernate HQL基础
  11. python float转int_Python 常见内置数据类型及其转换方法
  12. Adobe flash builder 4 不生效的序列号说明及解決方法
  13. 吞吐量测试(RFC2544)超详细步骤_使用思博伦spirent testcenter_双极未来
  14. 冒泡排序 java代码实现
  15. 红外解码软件 android,红外线遥控器软件解码程序(能解大部分遥控器的编码)
  16. 【历年IJCAI论文下载(含IJCAI2022)】图神经网络(GNN)(多行为推荐、多模态食谱表示学习、同质图表示学习)
  17. 多卡聚合设备基于融合系统指挥平台的解决方案
  18. Nginx的安装使用----反向代理服务器
  19. Mac brew update手顺
  20. ADAMS-Simulink联合仿真-零基础(一)

热门文章

  1. 如何用C++封装一个简单的数据流操作类(附源码),从而用于网络上的数据传输和解析?
  2. Laravel Trait
  3. 用 Python 制作一个迷宫游戏
  4. Javascript元素相关
  5. U-Net新玩法——ECG精准语义分割(2)
  6. 剑指 Offer 60. n个骰子的点数(动态规划)
  7. 五连胜?这才刚刚开始!
  8. Traceback (most recent call last):异常报错解决(1.22.)
  9. 解析宠物商店pet_shop
  10. 在国企的日子(第七章 转正)