方块移动(C语言)

方块移动
效果:
在这里插入图片描述

#include <stdio.h>
#include <windows.h>
void color(int c){
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c); 
}
void gotoxy(int x, int y) {
    COORD pos = {x,y};
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄
    SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置
}
void print(int m,int n,int r,int c){
	int i;
	gotoxy((2*m+c)/2+2,(2*n+r)/2);
	printf("$");
	color(6); //4是红色, 6是土黄色 
	for(i=0;i<r;i++){
		m+=2;
		gotoxy(m,n);
		printf("*");
	}
	for(i=0;i<c;i++){
		n+=1;
		gotoxy(m,n);
		printf("*");
	}
	for(i=0;i<r;i++){
		m-=2;
		gotoxy(m,n);
		printf("*");
	}
	for(i=0;i<c;i++){
		n-=1;
		gotoxy(m,n);
		printf("*");
	}
}
void dele(int m,int n,int r,int c){
	int i;
	gotoxy((2*m+c)/2+2,(2*n+r)/2);
	printf(" ");
	for(i=0;i<r;i++){
		m+=2;
		gotoxy(m,n);
		printf(" ");
	}
	for(i=0;i<c;i++){
		n+=1;
		gotoxy(m,n);
		printf(" ");
	}
	for(i=0;i<r;i++){
		m-=2;
		gotoxy(m,n);
		printf(" ");
	}
	for(i=0;i<c;i++){
		n-=1;
		gotoxy(m,n);
		printf(" ");
	}
}
int main(){
	int m=40,n=10,k=1;
	//打印外框 
	for(int i=0;i<70;i++){
		for(int j=0;j<70;j++){
			if(j>19&&j<=49&&(i==9||i==40))
				printf("-");
			else
				printf(" ");
			if(i>=9&&i<=40&&(j==19||j==49))
				printf("|");
			else
				printf(" ");
		}
		printf("\n");
	}
	Sleep(1000);
	
	while(1){
		print(m,n,4,4);
		Sleep(20);
		if(k<=75&&k>50||k<=150&&k>125)
			Sleep(40);
		dele(m,n,4,4);
		if(k<=50)
			m++;//k初值得为1 ,不然这里k++了51次,而下面只--了50次 
		else if(k<=75)
			n++;
		else if(k<=125)
			m--;
		else if(k<=150)
			n--;
		k++;
		if(k==151)
			k=1;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值