才学C不久,编了个汉诺塔。比较麻烦,仅供修改指正吧。
Tubro C for Win下通过。
/*汉诺塔,想用链表表做但是不太会:')*/
#include
#include
#include
#define N 7 /*方块的个数,可以自定义,不能大于8*/
#define X (x-100)/200
struct
{
int y[N]; /*标志杆上各点的纵坐标*/
int fa; /*标志杆上方块的个数*/
int fb[N]; /*标志杆上当前位置方块的宽度*/
}stick[3];
void drawintro(int x,int color) /*绘制箭头*/
{
setcolor(color);
line(x,20,x,40);
line(x-3,40,x+3,40);line(x+3,40,x,49);line(x,49,x-3,40);
setfillstyle(SOLID_FILL,color);
floodfill(x,45,color);
}
void drawblock(int x,int y,int w,int color) /*绘制方块*/
{
setcolor(color);
rectangle(x-10*w,y-9,x+10*w,y+9);
setfillstyle(SOLID_FILL,color);
floodfill(x-5,y,color);
floodfill(x+5,y,color); /*这种填充方式太恶心人了*/
}
void _line(int x,int y,int color) /*绘制消除方块后的线*/
{
setcolor(color);
line(x,y-9,x,y+9);
}
main()
{
int gd=DETECT,gm,i,x,key=0,f=0;
initgraph(&gd,&gm,"");
setbkcolor(2);
setcolor(1);
line(100,70,100,241);
line(300,70,300,400);
line(500,70,500,400);
settextstyle(0,0,4);
outtextxy(10,410,"Hanoi");
drawintro(x=100,4);
stick[0].fa=N;
stick[1].fa=stick[2].fa=0;
for(i=0;i
stick[0].fb[i]=i+1;
stick[1].fb[i]=stick[2].fb[i]=0;
stick[0].y[i]=stick[1].y[i]=stick[2].y[i]=250+19*i;
drawblock(x,stick[0].y[i],stick[0].fb[i],1);
}
setcolor(0);
line(x,241,x,259+19*(i-1));
setcolor(1);
line(x,260+19*(i-1),x,400);
while(key!=0x11b)
{
key=(bioskey(0));
if(key==0x4b00&&x!=100)
{
drawintro(x,0);
drawintro(x-200,
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级