自己想出来的小球运动的动画(其实不能叫做小球)
2014-08-04 13:22
351 查看
在贴吧看到这题
编号:G1
题目:printf()动画,运动的小球。
要求:非作图模式下,用printf()实现小球运动的动画,要求小球运动方向与边界成45°角。遇到边界会发生反弹。
我也不知道windows.h里面有那么多可以用的函数。。于是就用的数组
#include<stdio.h>
#include<string.h>
#include<windows.h>
#define row 20
#define col 30
void print(char A[][col]);
void pos(int x1, int y1, int x2, int y2, char A[row][col]);//根据前面的一个点的位置确定后面的位置
int main()
{ char A[row][col]={0};
A[0][0] =127;
print(A);
Sleep(300);
system("cls");
A[1][1] = 127;
print(A);
Sleep(300);
system("cls");
pos(0, 0, 1, 1, A);
}
void print(char A[][col])//print函数负责输出;
{
int i,j;
for (i=0;i<row;i++)
{
for(j=0;j<col;j++)
printf("%c",A[i][j]);
printf("\n");
}
memset(A,0,row*col);
}
void pos(int x1, int y1, int x2, int y2, char A[row][col])
{
while (1)
{
while((x2 - x1) == 1 && (y2 - y1) == 1)//向右下运动
{
x1 = x2;
y1 = y2;
if (x2 != (row - 1) && y2 != (col - 1))
x2++, y2++;
else if (x2 == (row - 1))
x2--, y2++;
else if (y2 == (col - 1))
x2++, y2--;
A[x2][y2] = 127;
print(A);
Sleep(300);
system("cls");
}
while ((x2 - x1) == 1 && (y2 - y1) == -1)//向左下运动
{
x1 = x2;
y1 = y2;
if (x2 != (row - 1) && y2 != 0)
x2++, y2--;
else if (x2 == (row - 1))
x2--, y2--;
else if (y2 == 0)
x2++, y2++;
A[x2][y2] = 127;
print(A);
Sleep(300);
system("cls");
}
while((x2 - x1) == -1 && (y2 - y1) == 1)//向右上运动
{
x1 = x2;
y1 = y2;
if (x2 != 0 && y2 != (col - 1))
x2--, y2++;
else if (x2 == 0)
x2++, y2++;
else if (y2 == (col - 1))
x2--, y2--;
A[x2][y2] = 127;
print(A);
Sleep(300);
system("cls");
}
while ((x2 - x1) == -1 && (y2 - y1) == -1)//向左上运动
{
x1 = x2;
y1 = y2;
if (x2 != 0 && y2 != 0)
x2--, y2--;
else if (x2 == 0)
x2++, y2--;
else if (y2 == 0)
x2--, y2++;
A[x2][y2] = 127;
print(A);
Sleep(300);
system("cls");
}
}
}
每次都要把数组清空还要一个个输出空字符效率很低
编号:G1
题目:printf()动画,运动的小球。
要求:非作图模式下,用printf()实现小球运动的动画,要求小球运动方向与边界成45°角。遇到边界会发生反弹。
我也不知道windows.h里面有那么多可以用的函数。。于是就用的数组
#include<stdio.h>
#include<string.h>
#include<windows.h>
#define row 20
#define col 30
void print(char A[][col]);
void pos(int x1, int y1, int x2, int y2, char A[row][col]);//根据前面的一个点的位置确定后面的位置
int main()
{ char A[row][col]={0};
A[0][0] =127;
print(A);
Sleep(300);
system("cls");
A[1][1] = 127;
print(A);
Sleep(300);
system("cls");
pos(0, 0, 1, 1, A);
}
void print(char A[][col])//print函数负责输出;
{
int i,j;
for (i=0;i<row;i++)
{
for(j=0;j<col;j++)
printf("%c",A[i][j]);
printf("\n");
}
memset(A,0,row*col);
}
void pos(int x1, int y1, int x2, int y2, char A[row][col])
{
while (1)
{
while((x2 - x1) == 1 && (y2 - y1) == 1)//向右下运动
{
x1 = x2;
y1 = y2;
if (x2 != (row - 1) && y2 != (col - 1))
x2++, y2++;
else if (x2 == (row - 1))
x2--, y2++;
else if (y2 == (col - 1))
x2++, y2--;
A[x2][y2] = 127;
print(A);
Sleep(300);
system("cls");
}
while ((x2 - x1) == 1 && (y2 - y1) == -1)//向左下运动
{
x1 = x2;
y1 = y2;
if (x2 != (row - 1) && y2 != 0)
x2++, y2--;
else if (x2 == (row - 1))
x2--, y2--;
else if (y2 == 0)
x2++, y2++;
A[x2][y2] = 127;
print(A);
Sleep(300);
system("cls");
}
while((x2 - x1) == -1 && (y2 - y1) == 1)//向右上运动
{
x1 = x2;
y1 = y2;
if (x2 != 0 && y2 != (col - 1))
x2--, y2++;
else if (x2 == 0)
x2++, y2++;
else if (y2 == (col - 1))
x2--, y2--;
A[x2][y2] = 127;
print(A);
Sleep(300);
system("cls");
}
while ((x2 - x1) == -1 && (y2 - y1) == -1)//向左上运动
{
x1 = x2;
y1 = y2;
if (x2 != 0 && y2 != 0)
x2--, y2--;
else if (x2 == 0)
x2++, y2--;
else if (y2 == 0)
x2--, y2++;
A[x2][y2] = 127;
print(A);
Sleep(300);
system("cls");
}
}
}
每次都要把数组清空还要一个个输出空字符效率很低
相关文章推荐
- 关于MO打印时不能正确打印用DC自己画出来的图片的问题的解决方案
- 【javascript动画之圆形运动】环绕鼠标运动作小球(兼容ie,ff,chrome,……)
- 背景小球动画,飘飞小雪花,随机点运动
- 想在自己电脑上禁止朋友玩游戏,又不能让人看出来是故意的(伤害感情),怎么办呢?
- android中Tween动画的监听事件【实现小球在手机屏幕运动一圈】
- javascript动画之圆形运动,环绕鼠标运动作小球
- 让Silverlight 2.0动画动起来Making Silverlight 2.0 animation Start(不能运动原因)
- 为什么不能记住后再自己写出来???
- 空间换时间思维——筛选法——N内求素数——一定要自己想,抄出来那部分代码拼接貌似可以,但不能写出来
- 总结体验1:就比如上面自己写的单链表建立这样的程序,其实明明知道输出单链表不能从头结点开始输入,而是要在第一个节点开始
- 帧动画的应用------自己在用的时候写了 估计一些刚入门的可能还不会用,就写出来留给大家使用
- 属性动画 小球从左上角到右下角运动
- 【html5】如何用Html5中的canvas模拟小球三维运动动画呢?
- 让Silverlight 2.0动画动起来(不能运动原因)Making Silverlight 2.0 animation Start
- 轻质杆两端小球和质心运动动画
- 让Silverlight 2.0动画动起来(不能运动原因)Making Silverlight 2.0 animation Start
- 一切成功源于积累——20140212 曾经不止一次地告诫自己 打死也不能做
- 每天为自己充点电还是好的虽然前期的知识有点乏味,但走一步是一步的心态不能变。嗯,加油!If you find a path with no obstacles, it probably doesn’t