zoukankan      html  css  js  c++  java
  • 第二次课程实验设计报告

    一.实验项目名称

    反弹小球

    二.实验项目功能描述

    通过小球击打砖块来获得分数的一个游戏,游戏代码一共分代码重构、显示边框、显示移动边框、反弹小球、消砖块五个部分,一步步构成最终的游戏。

    三.项目模块结构介绍

    #include <stdio.h>

    #include <stdlib.h>

    #include <conio.h>

    #include <windows.h>

    int high,width;

    int ball_x,ball_y;

    int ball_vx,ball_vy;

     int position_x,position_y;

     int ridus;

    int left,right;

    int ball_number;

    int block_x,block_y;

     int score;

    void gotoxy(int x,int y)

    {

         HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

         COORD pos;

         pos.X = x;

         pos.Y = y;

         SetConsoleCursorPosition(handle,pos);

    }

    void startup()

    {

         high = 13;

         width = 17;

         ball_x = 0; 

         ball_y = width/2; 

         ball_vx = 1;

         ball_vy = 1;

         ridus = 6;

         position_x = high;

         position_y = width/2; 

         left = position_y - ridus;

         right = position_y + ridus;

         ball_number = 0;

         block_x = 0;

         block_y = width/2+1;

         score = 0;

    }

    void show()

    {

         gotoxy(0,0);

         int i,j;

         for (i=0;i<=high+1;i++)

         {

              for (j=0;j<=width;j++)

              {

                   if ((i== ball_x) && (j== ball_y))

                        printf("0");  

                   else if (j==width)

                        printf("|");

                   else if (i==high+1)

                        printf("-");

                   else if ( (i==high) && (j>left) && (j<right) )

                        printf("*");

                   else if ((i== block_x) && (j== block_y))

                        printf("B");

                   else printf(" ");

              }

              printf(" ");

         }

         printf("反弹小球数:%d ",ball_number);

         printf("消掉的方块数:%d ",score);

    }

    void updateWithoutInput()

    {

         if (ball_x==high-1)

         {

              if ( (ball_y>=left) && (ball_y<=right) )

              {

                   ball_number++;

                   printf("a");

                   //ball_y = ball_y + rand()%4-2;

              }

              else

              {    

                   printf("游戏失败 ");

                   system("pause");

                   exit(0);

              }

         }

         if ((ball_x==block_x) && (ball_y==block_y))

         {

              score++;

              block_y = rand()%width;

         }

         ball_x = ball_x + ball_vx;

         ball_y = ball_y + ball_vy;

         if ((ball_x==0)||(ball_x==high-1)) ball_vx = -ball_vx;

         if ((ball_y==0)||(ball_y==width-1)) ball_vy = -ball_vy;

         Sleep(80);

    }

    void updateWithInput()

    {

         char input;

         if(kbhit())

         {

              input = getch();

              if (input == 'a')

              {

                   position_y--;

                   left = position_y - ridus;

                   right = position_y + ridus;

              }

              if (input == 'd')

              {

                   position_y++;

                   left = position_y - ridus;

                   right = position_y + ridus;

               }

         }

    }

    int main()

    {

         startup();

         while (1)

         {

              show();

              updateWithoutInput();

              updateWithInput();

         }

         return 0;

    }

     

     

  • 相关阅读:
    词法定界
    Lua 多维表的遍历中的赋值
    mac虚拟机parallels 无法启动 "Windows 7" 虚拟机
    MAC下Android的Eclipse开发环境的搭建
    Lua 的函数库 01
    mac 安装lua并配置Subline Text2 的lua开发环境
    Sublime Text2 注册码 汉化 配置lua开发环境
    js 月历 时间函数 月份第一天 星期的判断
    android 判断app是否处于前台
    android 更新下载apk
  • 原文地址:https://www.cnblogs.com/neverlove/p/10957012.html
Copyright © 2011-2022 走看看