C语言实现反弹球小游戏

本文为大家分享了C语言反弹球游戏的具体代码,供大家参考,具体内容如下

这是利用函数写的C语言小游戏,用来检验自己的学习成果

反弹球的实现主要有几个子函数组成

问题也在于如何实现小球的下落,以及碰撞得分等情况

#include<stdio.h>

#include<windows.h>
#include<conio.h>

//定义全局变量
int high,width;  //游戏边界
int ball_x,ball_y;  //小球位置
int ball_vx,ball_vy; //小球速度
int position_x,position_y; //挡板中心坐标
int radius;   //挡板半径
int left,right; //键盘左右边界
int ball_number; //反弹小球次数
int block_x,block_y; //方块的位置
int score;  //消掉方块的个数 

void HideCursor()  //隐藏光标
{
 CONSOLE_CURSOR_INFO cursor_info = {1, 0};
 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}

void gotoxy(int x,int y) //光标移动到(x,y)位置,清屏函数
{
  HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
  COORD pos;
  pos.X = x;
  pos.Y = y;
  SetConsoleCursorPosition(handle,pos);
}

void startup()  //数据初始化
{
 high=18;  //定义边界
 width=26;

 ball_x=0;  //小球坐标
 ball_y=width/2;

 ball_vx=1;  //小球速度方向
 ball_vy=1;

 position_x=high-1; //挡板中心坐标
 position_y=width/2; 

 radius=5;  //挡板半径

 left=position_y-radius; //键盘边界
 right=position_y+radius;

 block_x=0;   //方块位置
 block_y=width/2-4; 

 ball_number=0; //反弹小球个数

 score=0;  //消掉小球个数 

 HideCursor();
 } 

void show()  //显示界面
{
 gotoxy(0,0);
 int i,j;
 for(i=0;i<=high;i++)
 {
 for(j=0;j<=width;j++)
 {
  if((i==ball_x) && (j==ball_y)) //输出小球
  printf("0");
  else if((i==block_x)&& (j==block_y)) //输出滑块   //输出下边界
   printf("@");
  else if(i==high)   //输出下边界
   printf("-");
  else if(j==width)   //输出右边界
   printf("|");
  else if((i==high-1)&&(j>left)&&(j<right))
   printf("*");
  else printf(" ");
 }
 printf("\n");
 }
 printf("反弹小球次数:%d\n",ball_number);
 printf("消掉小球个数:%d\n",score);
 } 

void updateWithoutInpute() //与用户输入无关的更新
{
 if(ball_x==position_x-1)   //小球撞到挡板
 {
 if((ball_y>=left)&&(ball_y<=right))
 {
  ball_number++;
  //printf("\a");
 }
 else
 {
  printf("游戏失败\n");
  system("pause");
  exit(0);
 }
 }

 ball_x = ball_x + ball_vx;  //小球向速度方向移动
 ball_y = ball_y + ball_vy;

 if((ball_x==0) || (ball_x==high-2)) //小球撞到上下边界
 ball_vx=-ball_vx;
 if((ball_y==0) || (ball_y==width-1)) //小球撞到左右边界
 ball_vy=-ball_vy;

 if((block_x==ball_x) && (block_y==ball_y)) //小球撞到滑块
 {
 block_y=rand()%width-1;
 score++;
 }
 Sleep(120);

 } 

void updateWithInpute()  //与用户输入有关的更新
{
 char input;
 if(kbhit())
 {
 input=getch();
 if((input=='a')&&(left>=0))
 {
  position_y--;
  left=position_y-radius; //键盘边界
  right=position_y+radius;
 }
 if((input=='d')&&(right<width))
 {
  position_y++;
  left=position_y-radius; //键盘边界
  right=position_y+radius;
 }
 }
 }

int main()
{
 system("color 2f");     //改变控制台颜色
 startup();
 while(1)
 {
 show();          //显示界面
 updateWithoutInpute();    //与用户输入无关的更新
 updateWithInpute();     //与用户输入有关的更新
 }
 } 

小编之前也收藏了一段代码:C语言实现小球反弹,分享给大家

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

void ball()//1.画出小球
{
 printf("\t\t\t◎");
}
int main()
{
 int h=20;//球的高度初始化为20
 int i,j;//i是用来确定球的起点与终点,j是确定球的位置
 int der=1;//判断等于1时球下落,为0时球上升
 while(h>0)//高度大于0时,球都在动(当高度为0时停止)
 {
 if(der==1)
 {
  for(i=20-h;i<20;i++)//确定起点和终点 下落过程
  {
  system("cls");
  for(j=0;j<=i;j++)//确定球的位置
  {
   printf("\n");
  }
  ball();
  Sleep(50);
  }
  der=0;
 }
 else
 {
  h=h*8/9;//强起来高度是原来的9分之8
  for(i=20;i>=20-h;i--)//确定起点和终点 上升过程
  {
  system("cls");
  for(j=0;j<=i;j++)//确定球的位置
  {
   printf("\n");
  }
  ball();
  Sleep(50);
  }
  der=1;
 }

 }
 return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现简单弹球游戏

    电视机待机的屏幕上的弹球,怎么实现? 今天文章就跟大家分享下C语言实现简单弹球游戏的具体代码,供大家参考,具体内容如下 #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <math.h> #include <windows.h> //#include <sy

  • C语言实现反弹球小游戏

    本文为大家分享了C语言反弹球游戏的具体代码,供大家参考,具体内容如下 这是利用函数写的C语言小游戏,用来检验自己的学习成果 反弹球的实现主要有几个子函数组成 问题也在于如何实现小球的下落,以及碰撞得分等情况 #include<stdio.h> #include<windows.h> #include<conio.h> //定义全局变量 int high,width; //游戏边界 int ball_x,ball_y; //小球位置 int ball_vx,ball_vy

  • C语言实现五子棋小游戏

    首先我们先来看一个稍微简单些的实现方式: #include <stdio.h> #include <stdlib.h> #define N 15 int chessboard[N + 1][N + 1] = { 0 }; int whoseTurn = 0; void initGame(void); void printChessboard(void); void playChess(void); int judge(int, int); int main(void) { init

  • C语言实现2048小游戏

    本文实例为大家分享了C语言实现2048小游戏的具体代码,供大家参考,具体内容如下 具有以下特点: 1.linux下完成 2.非堵塞键盘读取 3.随机生成2和4 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define TTY_PATH "/dev/tty" #define STTY_ON "stty raw -echo -F" #define STTY_O

  • C语言实现俄罗斯方块小游戏

    C语言实现俄罗斯方块小游戏的制作代码,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define TTY_PATH "/dev/tty" #define STTY_ON "stty raw -echo -F" #define STTY_OFF "stty -raw echo -F" int map[21][14]; char

  • 利用C语言编写“剪刀石头布”小游戏

    前言 大家好~ 我是一名C语言初学者,学了C语言基础后,我制作了一个小游戏:剪刀石头布. 希望大家能对我的思路和代码提出小Tips(eg.更简便的方法与程序) 我也会虚心接受大家的建议~ 一.游戏原理 "剪刀石头布"这个游戏,想必大家都很熟悉了. 两个人在玩游戏时,事先都不知道对方将要出什么,这中间存在着一种随机性. 而这种随机性相当于C语言里stdlib.h库中rand()函数,rand()函数用来产生随机数,因为rand是根据提供给srand()的种子值返回一个随机数,所以要使每次

  • C语言三子棋小游戏的实现代码

    本文实例为大家分享了C语言三子棋小游戏的具体代码,供大家参考,具体内容如下 一.介绍: 运用C语言的数组等相关知识:实现一个简易的三子棋小游戏: 三子棋小游戏的大概内容为 此游戏在设计时:总共设计了三个文件: game.h: 类型的声明和函数的声明 game.c:函数功能的具体实现 test.c: 测试文件 二.具体实现: (1).game.h模块: 代码实现如下: #define _CRT_SECURE_NO_WARNINGS 1 //头文件包含 #include <stdio.h> #in

  • C语言实现飞机小游戏

    本文实例为大家分享了C语言实现飞机小游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<windows.h> int zdj_x,zdj_y; int zd_x,zd_y; int dj_x,dj_y; int speed; int map[21][41]; int score; int H=20,C=40; //墙是1:飞机2:子弹3:敌机4: void start()//设置初始值 { zdj_x=15; zdj_y=20; zd_x

  • 利用C语言实现扫雷小游戏

    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 说明:该游戏的实现需要建立三个文件 test2.c:整个游戏,开始游戏/退出游戏的大体执行流程 game2.c:具体实现扫雷游戏功能的函数定义 game.h:宏定义,函数声明,引用相关C库函数的头文件 test2.c 游戏的大体执行流程 #include"game2.h" //菜单函数 void menu() { printf("**************************\n")

  • C语言实现扫雷小游戏详解

    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 一.实现功能 首先显示一个小菜单,选择是否玩游戏.当用户选择退出时,程序运行结束,当用户选择玩游戏时,将提示用户输入扫雷位置坐标.当用户输入坐标超出棋盘范围或者位置之前已经进行扫雷时,将提示用户重新输入.当用户输入正确坐标时,如果输入位置没雷将会显示当前位置周边有几个雷,直到将所有雷找出后,重新显示菜单.当输入位置有雷时,游戏结束,重新显示菜单. 二.分析与介绍 首先编写程序开始前,我们要清楚知道棋盘时二维的,所以这里

  • C语言实现扫雷小游戏的全过程记录

    第一步思考要实现的功能 想必大家都知道扫雷这个小游戏,今天我们来用C语言实现一下,首先要扫雷,我们首先就需要有一个布置了雷的棋盘,然后开始扫雷,玩过扫雷的小伙伴都知道,如果选中的格子旁边没有雷,那么旁边的格子就会自动清空,大概的思路有了,现在我们开始实现. 第二步实现 初级版扫雷 首先创建棋盘的作用是用来存储雷的信息,这时我们思考一下,一个棋盘到底够不够用?棋盘多大才合适?我们打印出来的棋盘肯定是不能出现雷的信息的,不然游戏就无法正常进行了,但是我们雷的信息又需要棋盘存储,这样一想,一个棋盘似乎

随机推荐