*推箱子的逻辑原型
还不算真正的游戏
就只能编译器里看看
小白可以瞅瞅
我也是小白
兴起学的
这还是手机撸的
写完告诉自己写程序得多造轮子__自定义函数
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<unistd.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
/*小s推箱子*/
int x=1,y=2;/*小s初始点*/
int k=2,l=3,k2=5,l2=2,k3=6,l3=5;/*爱情初始点*/
int renew;/*重开逻辑值*/
int come1,here1,come2,here2,come3,here3;/*别过来啊!!!*/
char map[8][8];
void print(char map[][8]);
void target(char map[][8]);
void move(char map[][8]);
void A(char map[][8]);
void B(char map[][8]);
void C(char map[][8]);
int winor(char map[][8]);
void wall(char map[][8])/*墙壁位置刷新*/
{
int i,j;
for(i=0;i<8;i++){
for(j=0;j<8;j++)map[i][j]=' ';}
for(i=1;i<6;i++)
map[0][i]='#';
map[1][1]='#';map[1][4]='#';map[1][5]='#';map[1][6]='#';
map[2][1]='#';map[2][6]='#';
for(i=0;i<8;i++)
map[3][i]='#';map[3][3]=' ';map[3][5]=' ';
map[4][0]='#';map[4][2]='#';map[4][4]='#';map[4][7]='#';
map[5][0]='#';map[5][5]='#';map[5][7]='#';
map[6][0]='#';map[6][7]='#';
for(i=0;i<8;i++)
map[7][i]='#';}
void target(char map[][8]){/*目标点刷新*/
map[4][1]='$';map[5][1]='$';map[6][1]='$';}
void move(char map[][8]){/*小s移动*/
map[x][y]=' ';
if(kbhit()){
switch(getchar()){/*不能撞墙 不能推两个箱子*/
case 'w':x--;if(map[x][y]=='a'||map[x][y]=='b'||map[x][y]=='c'){
if(map[x-1][y]=='a'||map[x-1][y]=='b'||map[x-1][y]=='c')
x++;};if(map[x][y]=='#')x++;break;
case 's':x++;if(map[x][y]=='a'||map[x][y]=='b'||map[x][y]=='c'){
if(map[x+1][y]=='a'||map[x+1][y]=='b'||map[x+1][y]=='c')
x--;}if(map[x][y]=='#')x--;break;
case 'a':y--;if(map[x][y]=='a'||map[x][y]=='b'||map[x][y]=='c'){
if(map[x][y-1]=='a'||map[x][y-1]=='b'||map[x][y-1]=='c')
y++;}if(map[x][y]=='#')y++;break;
case 'd':y++;if(map[x][y]=='a'||map[x][y]=='b'||map[x][y]=='c'){
if(map[x][y+1]=='a'||map[x][y+1]=='b'||map[x][y+1]=='c')
y--;}if(map[x][y]=='#')y--;break;
case 'r':renew=1;break;}}
map[x][y]='s';}
void A(char map[][8]){/*推推爱情1*/
map[k][l]=' ';
if(x!=k||y!=l){
if(x>=(k-1)||x<=(k+1)){
if(y>=(l-1)||y<=(l+1)){come1=x;here1=y;}}}
if(x==k&&y==l){
k+=k-come1;l+=l-here1;}
map[k][l]='a';}
void B(char map[][8]){/*推推爱情2*/
map[k2][l2]=' ';
if(x!=k2||y!=l2){
if(x>=(k2-1)||x<=(k2+1)){
if(y>=(l2-1)||y<=(l2+1)){come2=x;here2=y;}}}
if(x==k2&&y==l2){
k2+=k2-come2;l2+=l2-here2;}
map[k2][l2]='b'; }
void C(char map[][8]){/*推推爱情3*/
map[k3][l3]=' ';
if(x!=k3||y!=l3){
if(x>=(k3-1)||x<=(k3+1)){
if(y>=(l3-1)||y<=(l3+1)){come3=x;here3=y;}}}
if(x==k3&&y==l3){
k3+=k3-come3;l3+=l3-here3;}
map[k3][l3]='c';}
void print(char map[][8]){/*大屏幕*/
int i,j;
printf("*********************\n");
printf("小s之推推推!\n");
printf("小tips--两下r重新开始哟!不用担心走错啦!");
for(i=0;i<8;i++){
for(j=0;j<8;j++)
printf("%c",map[i][j]);
printf("\n");}
printf("w上 s下 a左 d右\n");
printf("操作起来!:\n");
clrscr();}
int winor(char map[][8]){/*胜利条件*/
if(map[4][1]=='b'&&map[5][1]=='a'&&map[6][1]=='c')
{clrscr();printf("你 赢 啦 宝 贝!");return(1);}return(0);}
void main(){
while(1){
renew=0;x=1,y=2;
k=2,l=3,k2=5,l2=2,k3=6,l3=5;
printf("宝 贝,Do you want to play?\n");
if(getchar()=='y'){
wall(map);
while(1){
target(map);
move(map);
A(map);B(map);C(map);
print(map);
if(winor(map))
exit(1);
if(renew)
break;
sleep(1);}clrscr();continue;}
else
if(getchar()!='r'&&getchar()!='y')printf("滚吧你");
if(getchar()=='r')printf("想重开嘛");if(getchar()){clrscr();continue;}}}