请你编程
参加评选的程序采用的语言主要有C、Pascal、Basic。这次编程的重点之一是在于模拟物体在跨越两个窗口时的动作。遗憾的是很多程序都没有这个过程,所模拟的物体每次出现的间隙很大,有一种“跳动”的效果,有些甚至从一个窗口一下跳入下一个窗口,因此,效果不是很好。在这方面,宁夏的张永强所编制的程序作的较好,限于版面,本期不能登出。
下面向大家推荐陕西刘克文所编制的9612程序,这个程序简单易懂,结构清晰,基本上达到了设计要求。
#3 编写说明:
本程序先在左上角画一窗口,一小球在伴音下从窗口底部沿窗口中心线顺时针走一直角,至窗口右边停止前进,伴音随之消失,背景变换三次;再在右上角画一窗口,从上一窗口停止处继续往下运行,重复上述过程,直至遍历四个窗口。然后小球再顺时针在四个窗口中运行一次,程序结束。该程序在Turbo C 2.0版本下运行通过。
#include "conioh"
#include "dosh"
main()
{ int x,y,s;
void cs();
int pic();
textcolor(11);
textbackground(0);
clrscr(); /*清屏*/
for(i=0;i<2;i++) /*画面重复二次*/
{ window(1,1,40,12); /*左上角*/
x=20,y=13;
while(x<40)
{ if(i==0) s=200;
y==6?x++:y--;
s=pic(x,y,s,i);}
cs(x,y,2); /*将背景变换三次*/
windows(41,1,80,12); /*右上角*/
x=0,y=6;
while(y<12)
{ if(i==0) s=350;
x==20?y++:x++;
s=pic(x,y,s,i);}
cs(x,y,4);
window(41,13,80,25); /*右下角*/
x=20,y=0;
while(x>1)
{ if(i==0) s=150;
y==6?x--:y++;
s=pic(x,y,s,i);}
cs(x,y,1)
window(1,13,40,25); /*左下角*/
x=41,y=6;
while(y>1)
{ if(i==0) s=100;
x==20?y--:x--;
s=pic(x,y,s,i);}
cs(x,y,0);}}
/*小球在伴音下运行函数*/
int pic(int a,int b,int c,int j)
{ int h,k,l;
if(j==0)
{ textbackground(1);
clsscr();}
gotoxy(a,b);
putch("o");
for(h=1;h<3;h++) /*伴音*/
{ sound(u);
u=j=0?u+50:(u>900?50:u+20);
for(l=1;l<3;l++)
{for(k=1;k<25000;k++);} /*延迟*/
}
gotoxy(a,b);
putch(" ");
return(u);}
/*背景变换函数*/
void cs(int a,int b,int j)
{ int i,j,l;
nosound();
for(i=0;i<4;j++,i++)
{ textbackground(j);
clrscr();
gotoxy(a,b);
putch("o");
for(l=1;l<222;l++)
{for(k=1;k<30000;k++);} /*延迟*/
}}