📄 iostream.c
字号:
#include"header.c"
int iostream()
{
halfdelay(1);
ch=wgetch(game_win);
switch (ch)
{
case 'q': return 1;
//////////////////////////////////////////move left
//此出用GOTO是因为显示效果问题
case 'a':
t=0;
for(j=0;j<4;j++)
for(i=0;i<2;i++)
if( stone_s[type][view][i][j]!=0&&g_win[(x-1)+i][y+j-1]!=0)
{ t=1;goto next1;}
next1:if(t==0&&y>0)
y--;
show_g_stone(g_win,game_win);
show_stone(stone_s,&type,&view,game_win,&x,&y);
wrefresh(game_win);
return 0;
//////////////////////////////////////////move right
case 'd':
t=0;
for(j=3;j>=0;j--)
for(i=0;i<2;i++)
if( stone_s[type][view][i][j]!=0&&g_win[(x-1)+i][y+j+1]!=0)
{ t=1;goto next2;}
next2: if(y<(11-k)&&t==0)
y++;
show_g_stone(g_win,game_win);
show_stone(stone_s,&type,&view,game_win,&x,&y);
wrefresh(game_win);
return 0;
//////////////////////////////////////////move down
case 's':
for(i=0;i<20;i++)
{
if((t=make_game_win(stone_s,g_win,&type,&view,&x,&y))==0 )
x++;
}
x--;return 0;
/////////////////////////////////////////////chang shap
case 'w':
////////////////////////////////////judge wether can change the shape
//第一组FOR循环解决石头能否在游戏窗口上变形,第二个解决在窗口边界变形的问题
k=-1;t=-1;
for(i=stone_x-1;i>=0;i--)
{
for(j=0;j<stone_y;j++)
if(stone_s[type][(view+1)%4][i][j]!=0&&g_win[x-1+i][y+j]!=0)
{t=1;break;}
if(t==1) break;
}
for(j=3;j>=0;j--)
{
for(i=0;i<3;i++)
if(stone_s[type][(view+1)%4][i][j]!=0)
{ k=j;break;}
if(k==j) break;
}
if(t==-1&&y<=(11-k) )
view=(view+1)%4;
show_g_stone(g_win,game_win);
show_stone(stone_s,&type,&view,game_win,&x,&y);
wrefresh(game_win);
return 0;
//////////////////////////////////////action stop
case 'e':
halfdelay(FALSE);
while((ch=wgetch(game_win))!='e');
halfdelay(1);
if(s_flag==2)
{
///////////////////////////////这里是FOR的一部分,2P的操作要写在这里
//////////////////////////////////////////move left
//此出用GOTO是因为显示效果问题
del_stone(v_win,&v_score);
mvwprintw(win,game_win_y+stone_y+2+3,game_win_width+2+4,"2p score: %d",v_score);
case 'j':
t=0;
for(j=0;j<4;j++)
for(i=0;i<2;i++)
if( stone_s[v_type][v_view][i][j]!=0&&v_win[(v_x-1)+i][v_y+j-1]!=0)
{ t=1;goto v_next1;}
v_next1:if(t==0&&v_y>0)
v_y--;
show_g_stone(v_win,virtual_win);
show_stone(stone_s,&v_type,&v_view,virtual_win,&v_x,&v_y);
wrefresh(virtual_win);
return 0;
//////////////////////////////////////////move right
case 'l':
t=0;
for(j=3;j>=0;j--)
for(i=0;i<2;i++)
if( stone_s[v_type][v_view][i][j]!=0&&v_win[(x-1)+i][y+j+1]!=0)
{ t=1;goto v_next2;}
v_next2: if(v_y<(11-v_k)&&t==0)///////////////////////////////the k!
v_y++;
show_g_stone(v_win,virtual_win);
show_stone(stone_s,&v_type,&v_view,virtual_win,&v_x,&v_y);
wrefresh(virtual_win);
return 0;
//////////////////////////////////////////move down
case 'k':
for(i=0;i<20;i++)
{
if((v_t=make_game_win(stone_s,v_win,&v_type,&v_view,&v_x,&v_y))==0 )
v_x++;
}
v_x--;return 0;
/////////////////////////////////////////////chang shap
case 'i':
////////////////////////////////////judge wether can change the shape
//第一组FOR循环解决石头能否在游戏窗口上变形,第二个解决在窗口边界变形的问题
k=-1;t=-1;
for(i=stone_x-1;i>=0;i--)
{
for(j=0;j<stone_y;j++)
if(stone_s[v_type][(v_view+1)%4][i][j]!=0&&g_win[v_x-1+i][v_y+j]!=0)
{t=1;break;}
if(t==1) break;
}
for(j=3;j>=0;j--)
{
for(i=0;i<3;i++)
if(stone_s[v_type][(v_view+1)%4][i][j]!=0)
{ k=j;break;}
if(k==j) break;
}
if(t==-1&&v_y<=(11-k) )
v_view=(v_view+1)%4;
show_g_stone(v_win,virtual_win);
show_stone(stone_s,&v_type,&v_view,virtual_win,&v_x,&v_y);
wrefresh(virtual_win);
return 0;
}
//////////////////////////////////////////////////2p end
default :return 0;
}//endswitch// the fun of the stone
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -