【C语言】简易版_反弹小球游戏
目录
前言
正文
一、显示静止的小球
二、小球下落
三、上下弹跳的小球
四、斜着弹跳的小球
五、控制小球弹跳的速度
六、完整代码
写在最后
前言
我们利用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语言】简易版_反弹小球游戏相关推荐
- 【C语言】简易版_飞机小游戏
目录 前言 正文 一.利用scanf控制飞机移动 二.getch控制飞机移动 三.显示复杂的飞机图案 四.发射激光 五.打靶练习 写在最后 前言 在前面弹跳小球 的基础上实现一个简单的飞机游戏,主要包 ...
- c语言小球反弹的编程,少儿创意编程scratch一反弹小球游戏教程
亲爱的小朋友,相信你们都玩过很多小游戏呢.那么你们有没有想过自己是否会做小游戏呢?不管答案是会或者不会,今天小编姐姐就告诉你,做小游戏so easy,你一样可以编出好玩的小游戏呢!来,我们一起进入今天 ...
- python贪吃蛇最简单代码_利用python实现简易版的贪吃蛇游戏(面向python小白)
引言 作为python 小白,总是觉得自己要做好百分之二百的准备,才能开始写程序.以至于常常整天在那看各种语法教程,学了几个月还是只会print('hello world'). 这样做效率太低,正确的 ...
- 利用python实现简易版的贪吃蛇游戏(面向python小白)
前言 这篇文章主要给大家介绍了关于如何利用python实现简易版的贪吃蛇游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学 ...
- c语言程序设计黑白棋游戏,C语言课程设计_黑白棋游戏
C语言课程设计_黑白棋游戏 C语言课程设计_黑白棋游戏 #include "graphics.h" /*图形系统头文件*/ #define LEFT 0x4b00 /*光标左键值* ...
- 【C语言】进阶版_飞机小游戏
目录 前言 一.代码重构 二.新式子弹代替激光 三.优化敌方战机 四.增加积分模块 五.更好的清屏功能 写在最后 前言 没有学习函数,以上功能都在main()中实现是有点痛苦的.在学了函数之后会模块化 ...
- 基于JAVA实现简易版泡泡堂小游戏
一.简介--童年记忆 <泡泡堂>是由韩国游戏公司Nexon开发的一款休闲游戏(Casual Game),于2003年在中国大陆上线,由盛大网络运营.游戏讲述了在哈巴森林的一个村落的村民们利 ...
- [源码和文档分享]基于JAVA实现简易版泡泡堂小游戏
一.简介--童年记忆 <泡泡堂>是由韩国游戏公司Nexon开发的一款休闲游戏(Casual Game),于2003年在中国大陆上线,由盛大网络运营.游戏讲述了在哈巴森林的一个村落的村民们利 ...
- 【C语言】豪华版_飞机小游戏
目录 前言 一.飞机显示与控制 二.发射子弹 三.击中敌机 四.多台敌机 五.发射散弹 写在最后 前言 这是飞机游戏的第三版,我们已经实现了基础版和进阶版的飞机游戏 ,但是存在的问题很明显:已经发射 ...
最新文章
- Webex远程网络视频会议使用指南
- oracle, to_char(), to_number, ORA_01722
- CMap在用CString做key类型时,ARG_KEY要选LPCTSTR
- 关于 SAP Spartacus OAuth 2.0 Resource Owner Password Flow 实现的一些讨论
- IntelliJ IDEA 如何设置编辑窗口的背景图片
- K8S的HelloWorld之旅
- redis 如何 mysql_Redis 如何保持和 MySQL 数据一致
- Python 竟能绘制如此酷炫的三维图
- Python定义函数及引用
- Hibernate HQL基础
- python float转int_Python 常见内置数据类型及其转换方法
- Adobe flash builder 4 不生效的序列号说明及解決方法
- 吞吐量测试(RFC2544)超详细步骤_使用思博伦spirent testcenter_双极未来
- 冒泡排序 java代码实现
- 红外解码软件 android,红外线遥控器软件解码程序(能解大部分遥控器的编码)
- 【历年IJCAI论文下载(含IJCAI2022)】图神经网络(GNN)(多行为推荐、多模态食谱表示学习、同质图表示学习)
- 多卡聚合设备基于融合系统指挥平台的解决方案
- Nginx的安装使用----反向代理服务器
- Mac brew update手顺
- ADAMS-Simulink联合仿真-零基础(一)
热门文章
- 如何用C++封装一个简单的数据流操作类(附源码),从而用于网络上的数据传输和解析?
- Laravel Trait
- 用 Python 制作一个迷宫游戏
- Javascript元素相关
- U-Net新玩法——ECG精准语义分割(2)
- 剑指 Offer 60. n个骰子的点数(动态规划)
- 五连胜?这才刚刚开始!
- Traceback (most recent call last):异常报错解决(1.22.)
- 解析宠物商店pet_shop
- 在国企的日子(第七章 转正)