C语言小游戏快速入门--弹跳小球

article/2025/9/23 2:33:32

目录

  • 一、前言
  • 二、弹跳小球的实现
    • 2.1、界面设置
    • 2.2、弹跳逻辑
      • 1、 game.h
      • 2、 game.c
      • 3、 test.c
  • 三、总结

一、前言

相信很多小伙伴在学习完C语言语法之后就想要做几个小游戏,来练练手。弹跳小球就很适合C语言初学者,甚至你不需要学习到数组的知识就可以上手。为了是游戏有更好的体验,博主还增加了游戏界面和小球的颜色。增加游戏界面是为了后面学习可以打打基础,小球颜色就当是扩充的知识点吧。也不是特别难理解。话不多说,先来体验一下。

弹跳小球

二、弹跳小球的实现

2.1、界面设置

玩游戏的时候肯定需要一个界面跟玩家进行交互,这时候可以提供一个可视化界面供用户选择。按照玩家的选择做出不同的动作。这里只做了一个非常简洁的界面,这个界面以后也会经常出现,因为我会经常沿用这个界面。会了逻辑,你也可以实现不同的界面。


void menu()//菜单
{printf("|----------------------|\n");printf("|      1.开始游戏      |\n");printf("|----------------------|\n");printf("|      2.游戏帮助      |\n");printf("|----------------------|\n");printf("|      3.更新日志      |\n");printf("|----------------------|\n");printf("|      0.退出游戏      |\n");printf("|----------------------|\n");printf("\n");printf("(温馨提醒:请按照菜单相应的选项选择)");printf("\n");printf("请输入你的选择:>");}

实现游戏界面运行结果:

弹跳小球游戏界面

2.2、弹跳逻辑

1、 game.h

该头文件用来保存函数的声明,还有定义的一些宏。为什么会选择宏定义来做呢?是因为可以方便修改和以后程序扩展的需要。当然这里也可以不用宏定义来做,直接给个固定的值就好了。但是博主习惯用宏定义,所以这里就用了宏定义。先说说什么是宏定义吧。(不会具体讲解这个语法点,只讲该弹跳小球具体用到的宏。)所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。在这里我用了#define row 14#define col 30两个普通宏定义来控制x和y方向上的坐标。

#pragma once//防止头文件重复包含
#include<stdio.h>//输入输出头文件//不过我这里并没有用到
#include<windows.h>//windowsAPI//这里用到了更改颜色的函数、控制控制台窗口大小的函数、延迟函数、清屏函数
#include<conio.h>//_getch()头文件#define row 14//后续碰到row都可以看成是14
#define col 30//后续看到col都可以看成是30void HideCursor();//隐藏光标函数
void update();//菜单更新日志
void game_help();//游戏帮助
void play_game();//开始游戏
void menu();//游戏菜单

2、 game.c

该.c文件用来保存一些函数的定义。这里博主写的函数定义也好函数声明也好都是从下往上写的,也就是说博主把main函数放在了后面,因为函数的实现在main函数前面,所以也可以不声明,但是为了防止出差错,所以博主还在前面给函数声明了。

#include"game.h"void HideCursor()//隐藏光标函数
{CONSOLE_CURSOR_INFO cursor;cursor.bVisible = FALSE;cursor.dwSize = sizeof(cursor);HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorInfo(handle, &cursor);
}static void update_menu()//更新日志菜单
{printf("(暂无)\n");printf("\n");printf("\n");printf("\n");printf("(按1返回,按任意键退出)\n");printf("请选择:>");
}
void update()//更新日志
{update_menu();switch (_getch()){case '1':break;default:exit(0);break;}
}
static void game_help_menu()//游戏帮助菜单
{printf("\n");printf("游戏操作:\n");printf("\n");printf("①:简单观看小球\n");printf("\n");printf("\n");printf("\n");printf("(按1返回,按任意键退出)\n");printf("请选择:>");
}
void game_help()//游戏帮助
{game_help_menu();switch (_getch()){case '1':break;default:exit(0);break;}
}
void play_game()//开始游戏
{HideCursor();int y = 5;int x_v = 1;int y_v = 1;int x = 0;int left = 0;int right = col;int top = 0;int bottom = row;while (1) {x = x + x_v;y = y + y_v;system("cls");for (int i = 0; i < x; i++){printf("\n");}for (int j = 0; j < y; j++){printf(" ");}system("color 04");printf("●\n");Sleep(50);if (x==bottom||x==top){x_v = -x_v;}if (y==left||y==right){y_v = -y_v;}}
}
void menu()//菜单
{printf("|----------------------|\n");printf("|      1.开始游戏      |\n");printf("|----------------------|\n");printf("|      2.游戏帮助      |\n");printf("|----------------------|\n");printf("|      3.更新日志      |\n");printf("|----------------------|\n");printf("|      0.退出游戏      |\n");printf("|----------------------|\n");printf("\n");printf("(温馨提醒:请按照菜单相应的选项选择)");printf("\n");printf("请输入你的选择:>");}

3、 test.c

该.c文件就是用来实现函数调用的逻辑

#include"game.h"int main()
{SetConsoleTitle("弹跳小球游戏");//控制台窗口菜单栏的字system("mode con cols=32 lines=16");//控制台的大小,这里可以按需要自己设置do{system("cls");//清屏函数menu();//菜单switch (_getch())//_getch()可不用按回车{case '1':system("cls");play_game();//开始游戏break;case '2':system("cls");game_help();//游戏帮助break;case '3':system("cls");update();//更新日志break;case '0':exit(0);//退出游戏break;default://这里博主增加了一个消息机制来实现玩家误操作的提醒MessageBox(NULL, "输入有误,请重新输入", "提示", MB_OK);break;}} while ('0');return 0;
}

游戏运行截图

在这里插入图片描述

三、总结

除做小游戏外,更重要的是锻炼编程思想,以备将来做更大的程序。

弹跳小球


http://chatgpt.dhexx.cn/article/OTVB8lIa.shtml

相关文章

【C语言】简单小游戏项目:《别踩白块儿》

序 突然喜欢惊鸿一瞥这个词&#xff0c;一见钟情太肤浅日久生情太苍白&#xff0c;别人眉来眼去&#xff0c;我只偷偷看你一眼。 嗨&#xff01;这里是狐狸~ 新的一周又开始了&#xff0c;时间过得还真快&#xff0c;不知道给大家分享点啥了&#xff0c;想发偏算法之类怕大家…

【C语言小游戏】走迷宫

偶然翻到了自己大一时候写的一些代码&#xff0c;代码冗余&#xff0c;但还是想保存下来&#xff0c;以作纪念。 文章目录 1.运行效果2.运行环境3.完整代码 1.运行效果 2.运行环境 源码(Dev5.4.0版本下可直接(.cpp文件)运行 gcc 4.7.2) 注意&#xff1a;由于部分代码为C11标准&…

C语言小游戏------贪吃蛇----小白专用

C语言贪吃蛇小游戏 视频正在随缘策划中。。。。 废话在后面直接上程序 该程序在VS2019上可完美运行。 #include<stdio.h> #include<stdlib.h> #include<Windows.h> #include<time.h> #include<conio.h> constexpr auto maphigh 28, mapwid…

bootstrap时间控件--时间选择器

对应上面的三个时间选择器&#xff0c;写法如下&#xff1a; 首先引入css和js&#xff1a; <link href"https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel"stylesheet"> <link href"https://cdn.bootcss.com/bootstrap-…

日期时间控件

标题 开发软件使用到日期时间控件的地方很多&#xff0c;但是很多时候Html5自带的时间控件无法满足开发的需要&#xff0c;所以使用这种时间控件完全没有问题 引用 很多时候我们开发引用别人的控件时候&#xff0c;发现老是出现错误&#xff0c;是因为我们引用出现错误&#x…

时间控件(Time Control)

之前在网上看时间控件&#xff0c;看到这个http://hi.baidu.com/fxh19860822/blog/item/dd17d923343556ae4623e8e9.html&#xff0c;感觉颜色蛮好的&#xff0c;后来觉得要是时针、分针、秒针也可以供用户交互就更好了&#xff0c;不管怎样&#xff0c;有了idea就试试吧。 老规…

时间日期选择控件

这篇blog带来一个感觉不错的时间日期选择控件&#xff0c;当然&#xff0c;该控件也可以自定义选项内容。但这里主要说下时间选择的功能&#xff01; github地址 跟着大神的脚步&#xff0c;总有一天会成为神&#xff01; 效果&#xff1a; 关键点&#xff1a; 该控件可以…

jqueryUI日期控件和时间控件

日期控件用法&#xff1a; <!DOCTYPE html> <head><meta charset"utf-8"><title>日期</title><link rel"stylesheet" href"css/jquery-ui.css"><script src"js/jquery-3.3.1.min.js"><…

Timer时间控件

第一步、创建一个Windows窗体&#xff0c; 第二步、创建样式&#xff0c;在工具箱中找到TextBox和Labell、Button、timer。 第三步、改变属性的Name和 Text&#xff08;就是改写名称&#xff09; 第四步、排版按钮 1&#xff1a;使用的控制器是Label&#xff1b;name改为lbl…

web前端时间控件使用

官方参考地址&#xff1a;http://www.layui.com/laydate/ 1.首先把下载的layDate文件夹放入项目目录下 2.在需要使用的页面引入/layDate/laydate.js 3.创建input并使用js初始化input&#xff0c;获取选择时间值时只需获取input的value即可 官方实例&#xff1a; 生成效果&a…

时间日期控件的使用

在Android中&#xff0c;时间日期控件相对来说还是比较丰富的。其中&#xff0c;DatePicker用来实现日期输入设置&#xff0c;TimePicker用来实现时间输入设置。DatePickerDialog用来显示日期对话框&#xff0c;TimePickerDialog用来显示时间对话框。AnalogClock用来显示一个指…

Android中日期和时间控件的使用

本文主要讲述Android中的日期控件和时间控件的使用&#xff0c;以一个Demo的例子来展示日期和时间控件的使用&#xff0c;先看下如下效果图&#xff1a; 从效果图中可以看到该Demo是通过单击【选择日期】按钮和【选择时间】按钮弹出日期或者时间的对话框&#xff0c;然后设置日…

前端时间控件

1.My97 Datepicker js引入&input标签编写 <script type"text/javascript" src"<%request.getContextPath() %>/js/My97DatePicker/WdatePicker.js"></script> <input style"width: 80%" id"showStartDate&quo…

Android开发之日期时间控件选择

Android开发之日期时间控件选择 文章目录 前言一、创建弹出Layout1.1 新建Layout&#xff0c;修改样式为LinearLayout1.2 Layout中添加日期和时间控件 二、新建DateTimeDialog2.1 创建静态方法2.1.1 创建SetDateDialog&#xff0c;用于选择日期2.1.2 SetDateDialog中绑定textVi…

Web前端-时间日期控件

需求&#xff1a;同时可以选择 时间 和 日期 通过设置type属性为datetime&#xff0c;即可在同一个选择器里同时进行日期和时间的选择 <template><div class"block"><span class"demonstration">默认</span><el-date-pickerv…

android时间控件

原文地址&#xff1a;http://www.360doc.com/content/14/0617/16/18203124_387517665.shtml 前言 这一篇博客分别讲解Android平台下&#xff0c;关于日期和时间的几个相关控件。包括DatePicker&#xff08;日期选择控件&#xff09;、TimePicker&#xff08;时间选择控件&…

时间控件(选择时间范围的插件)

后台开发&#xff0c;一般都是有筛选条件的查询&#xff0c;那么问题就来了&#xff0c;根据日期范围搜索的情况下&#xff0c;插件要怎么选&#xff1f;&#xff1f;&#xff1f;&#xff1f; 这个是最开始&#xff0c;我采用的是两个时间插件&#xff0c;其他也没啥&#xff…

jQuery时间控件

时间控件 <!DOCTYPE html> <html><head><title></title><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><style>.dateinputer{line-height:40px;height:40px;margin:10px 0;border:1px s…

日期/时间控件DateTimePicker

概述&#xff1a; DateTimePicker外观像一个组合框&#xff0c;用于显示日期和时间。当单击其下拉箭头时&#xff0c;会出现一个按月份显示的日历&#xff0c;用户可以从中选择日期。 1、时期/时间控件的属性 属性说明Format用于设置显示日期/时间的格式&#xff0c;可选以下值…

时间控件

最近做了一些前端的时间控件的应用&#xff0c;下边总结一下用的这些控件。 一 Bootstrap的datetimepicker 1. 首先导入必须的css和js文件 <link href"http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" rel"style…