C语言实现打砖块游戏

本文实例为大家分享了C语言实现打砖块游戏的具体代码,供大家参考,具体内容如下

代码:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>

int score;
int ball_row, ball_col;
int ball_vv, ball_vh;
int area_height, area_width;
int baffle_col, baffle_row, baffle_size;
int brick_col, brick_row;
bool isLose;

void gotoxy(int x, int y) {
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle, pos);
}
void HideCursor() {
    CONSOLE_CURSOR_INFO cursor_info = { 1,0 };
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}

void startup()
{
    area_height = 20;
    area_width = 40;
    ball_row = area_height / 2;
    ball_col = area_width / 2;
    ball_vv = 1;
    ball_vh = 1;

    baffle_col = area_width / 2;
    baffle_row = area_height - 2;
    baffle_size = 8;
    
    brick_row = 1;
    brick_col = rand() % area_width;

    score = 0;
    isLose = false;
}

void show()
{
    gotoxy(0, 0);
    int i, j;
    //system("cls");
    for (i = 0; i <= area_height; i++)
    {
        for (j = 0; j <= area_width; j++)
        {
            if (i == ball_row && j == ball_col)
            {
                printf("O");
            }
            else if (i == 0 || i == area_height)
                printf("-");
            else if (j == 0 || j == area_width)
                printf("|");
            else if (i == baffle_row && (j >= baffle_col && j <= baffle_col + baffle_size))
                printf("=");
            else if (i == brick_row && j == brick_col)
                printf("#");
            else printf(" ");
        }
        printf("\n");
    }
    printf("score:%d\n", score);
}

void updateWithhoutInput() {
    static int count = 0;

    if(count % 5 == 0){
        ball_col += ball_vh;
        ball_row += ball_vv;
    }
    
    if (ball_col == 0 + 1 || ball_col == area_width - 1)//vh changed
        ball_vh *= -1;
    if (ball_row == 0 + 1 /*|| ball_row == area_height - 1*/)//vv changed
        ball_vv *= -1;
    if (ball_row == baffle_row - 1 && (ball_col >= baffle_col && ball_col < baffle_col + baffle_size))//在baffle上一行就判断碰撞。 
        ball_vv *= -1;
    // 砖块的左,右,下左,下,下右可以检测到碰撞 
    if ((ball_row == brick_row + 1 && (ball_col >= brick_col - 1 && ball_col <= brick_col + 1))||(ball_row == brick_row && (ball_col == brick_col - 1 || ball_col==brick_col+1))) {
        ball_vv *= -1;
        brick_row = -1;
        score += 10;
        brick_row = 1;
        brick_col = rand() % area_width;
    }

    if (ball_row >= area_height)
        isLose = true;
        
    count++;
}

void updateWithInput() {

    char input;
    if (kbhit()) {
        input = getch();
        switch (input)
        {
        case 'a': if (baffle_col > 0 + 1)baffle_col--; break;
        case 'w': if (baffle_row > 0 + 1)baffle_row--; break;
        case 'd': if (baffle_col < area_width - baffle_size - 1)baffle_col++; break;
        case 's': if (baffle_row < area_height - 1)baffle_row++; break;

        default:
            break;
        }
    }
}

int Lost(){
    if(ball_row > area_height)
        return 1;
    return 0;
}

int IsFinish() {//游戏是否结束 
    if (score == 100) {
        system("cls");
        printf("congretulations!!!");
        score = 0;
        _sleep(500);//先暂停在现实符合人性化 
        system("pause");
        return 1;
    }
    else if (Lost() == 1) {
        system("cls");
        printf("you have lost!!!");
        score = 0;
        _sleep(500);
        system("pause");
        return 1;
    }
    return 0;
}

int main()
{
    HideCursor();
    startup();
    while (1)
    {
        show();
        updateWithInput();
        updateWithhoutInput();
        if(IsFinish() == 1){
            startup();
            continue;
        }
    }
    return 0;
}

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

(0)

相关推荐

  • C语言 小游戏打砖块实现流程详解

    始祖是美国英宝格公司(en:Atari Games,ja:アタリ (ゲーム))于1976年推出的街机游戏"Breakout"(en:Breakout),由该公司在1972年发行的"PONG"(en:PONG,ja:ポン (ゲーム),世界上第一款电子游戏,类似台球)改良而来.相较于其前作,一个人就可以玩与变化丰富这两项特点让Breakout相当卖座,使各家公司竞相模仿. 因为规则简单与游戏性,现在许多移动电话都有内建打砖块游戏,也有许多因特网小游戏版本,目前在网上可以

  • C语言实现打砖块游戏

    本文实例为大家分享了C语言实现打砖块游戏的具体代码,供大家参考,具体内容如下 代码: #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<Windows.h> int score; int ball_row, ball_col; int ball_vv, ball_vh; int area_height, area_width; int baffle_col, baffle_row,

  • C语言实现打砖块小游戏

    本文实例为大家分享了C语言实现打砖块游戏的具体代码,供大家参考,具体内容如下 本节我们将沿用 上一节 所提到的函数式游戏框架来写一个弹球打砖块的游戏. 基本量.边框绘制 我们首先定义好可能需要的变量,比如小球坐标以及速度.游戏界面高度和宽度等等,然后再根据之前提到的弹跳小球重构代码,剩下的内容再分步添置即可. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <cwindow.h&

  • C语言数组实现打砖块游戏

    本文实例为大家分享了C语言数组实现打砖块游戏的具体代码,供大家参考,具体内容如下 这次我们使用数组来改进打砖块游戏. 反弹的球 首先我们实现一个可以在荧幕上反弹的小球.使用二维数组 int canvas[High][Width] ( 和js的canvas没有一毛钱关系)来储存画布上的所有元素,值为0时输出空格,值为1时输出小球. 设小球坐标为(ball_x, ball_y),则有canvas[ball_x][ball_y] = 1 ,且暂时将其他元素的值设为0. 每次更新小球位置时将原位置元素设

  • C语言实现图形化打砖块游戏

    本文实例为大家分享了C语言实现图形化打砖块游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h>  #include<conio.h> #include<easyx.h> #include<Windows.h> #define WINDOW_Width  768 #define WINDOW_Height 1073  #define BrickWidth 81 #define BrickHeight 27 #define ROWS 5

  • 用JS实现一个简单的打砖块游戏

    话不多说,先看看效果: HTML架构部分 <!-- HTML结构 --> <div class="content"> <div class="game"></div> <div class="container"> <h2>打砖块小游戏</h2> <hr /> <center> <button id="start"

  • Java实现经典游戏打砖块游戏的示例代码

    目录 前言 主要设计 功能截图 代码实现 游戏核心类 小球类 砖块类 总结 前言 <JAVA打砖块>游戏是自制的游戏.玩家操作一根萤幕上水平的“棒子”,让一颗不断弹来弹去的“球”在撞击作为过关目标消去的“砖块”的途中不会落到萤幕底下. 主要设计 设计游戏界面,用swing实现 设计砖块,砖块类, 设计小球,满屏乱跑的小球类,负责打碎砖块 设计棒子,左右移动的木头板类 球碰到砖块.棒子与底下以外的三边会反弹,落到底下会失去一颗球,把砖块全部消去就可以破关. 小球碰到砖块的回调算法设计 小球碰到棒

  • React-intl 实现多语言的示例代码

    最近在项目中添加了语言国际化的功能. 语言国际化,也有人说成是语言本地化,其实就是为Web App添加多语言,我们的项目当前包含了中文版和英文版,按理来说『逐字替换』也不是多大事儿,但是,这么Low的做法,有钱途吗? 一开始的时候,我考虑的是传统的为整个项目添加config文件,根据不同的语言和地区,加载不同的config文件,就能够达到界面语言切换的目的.当然,也正是因为这个想法太过于幼稚,所以才被称为『一开始』的想法.语言的国际化不仅仅是将界面上的UI文字翻译成另一种语言,还包括了日期&时间

  • 详解React-Native全球化多语言切换工具库react-native-i18n

    开篇啰嗦–阶段感悟 最近2 -3个月基本都因为一些私事没怎么系统的工作和学习,途中看了几天Kotlin的东西写了些demo并且整了个小项目,但是整体状态不是很好,这些天看到些95后码农的强势细思极恐. 现在大多数醒来就已经是中午,起得早去一下健身房,起的晚就家里宅一天.公司有事或者有其他家事就去协调/沟通/处理下,整个人感觉都提前进入养老状态(当然这个锅有一半是沉迷王者荣耀不可自拔,不太好) 最近项目上基本没啥事情了,然后让手下的小伙伴们对之前做的一些内容进行二次封装,然后他们引用了一个第三方国

  • Go语言程序查看和诊断工具详解

    想必Java 的开发者没有不知道或者没用过 jps 这个命令的,这个命令是用来在主机上查看有哪些 Java 程序在运行的. 我刚用 Go 语言程序的时候也很苦恼,我部署在公司服务器上的 Go 程序,其他的同事由于不清楚就经常找不到. 那么 Go 语言有没有像 jps 这样的工具呢?当然有,不仅有,而且还是 Google 自己出品的,官方认证(这种问题 Google 不可能自己想不到啊).名称也跟 jps 很像,叫 gops. 安装 gops 并不包含在官方安装包中,不属于标准工具.需要手动获取.

随机推荐