写个小游戏激励下复习的自己1

翻开博客,发现学习这者三四个月以来也就是写个测试代码的水平,显得略有写苍白,所以停更了一段时间,打算先总体的学完嵌入式的框架,再来慢慢的提升一下博客的质量。

最近一个月,学到了嵌入式比较核心的东西,例如系统移植和驱动、STM32等,之前接触的比较少,显得生疏,写博客也觉得无从下手。

好在慢慢的熬过来了,虽然学的不大精,也算大致了解了体系,现在开始再次复习一遍,用小项目的形式,慢慢的融汇贯通自己所学,也逐渐实现一下自己第一阶段吹下的牛逼。

项目名称:催眠小球(瞎掰的名字)

项目功能:一个控制台程序,一个圆圈弹来弹去,逐渐占满空间

用到技术:C语言,循环结构、选择结构、控制语句等,一个新的东西是我终于会控制控制台的光标位置了.....

项目效果:如图,足够催眠,看着看着我都困了

 函数实现:用到了多文件编译,只用在main函数中调用showball(int pos_x,int pos_y)//显示小球的位置可以了,就用到三个函数:

void drawFrame(int pos_x,int pos_y);
void showball(int pos_x,int pos_y);
void gotoxy(int x, int y);

实现如下

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

void drawFrame(int x,int y){//画出边框
int i,j;
gotoxy((x+50)/2, y/2);
printf(" 催眠弹球 ");
gotoxy(0, -1);
for(i=0;i<y;i++)
printf(" ");

for(i=0;i<30+x;i++)
{
if(i<x)
printf(" ");
else
printf("**");
}
printf(" ");

for(i=0;i<=20;i++)
{
for(j=0;j<31+x;j++)
{
if(j<x)
{
printf(" ");
continue;
}
if(j==x || j==30+x)
printf("*");
else
printf(" ");
}
printf(" ");
}
for(i=0;i<30+x;i++)
{
if(i<x)
printf(" ");
else
printf("**");
}
}

void showball(int pos_x,int pos_y){//显示小球的位置
int i,j; //循环变量
int velocity_x=1; //小球变化步长
int velocity_y=1;
int top = pos_y; //上下左右边界
int bottom = pos_y+20;
int left=pos_x;
int right=pos_x+57;

drawFrame(pos_x,pos_y); //绘制出边框
while(1){
gotoxy(pos_x, pos_y); //移动光标
pos_x=pos_x+velocity_x; //设置位置
pos_y=pos_y+velocity_y;
printf("O");

Sleep(100);
//printf("");
// printf(" ");
if(bottom == pos_y || top == pos_y)   //判断是否到边界,移动位置取反
velocity_y = -velocity_y;
if(left == pos_x || right == pos_x)
velocity_x = -velocity_x;
}
}


void gotoxy(int x,int y) //设置光标的位置
{
COORD c;
c.X=x+1;
c.Y=y+1;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}

原文地址:https://www.cnblogs.com/huiji12321/p/11649750.html