⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mini-fooltrs 最简俄罗斯(一百多行).htm

📁 经典小游戏,希望能给大家带来点好处
💻 HTM
📖 第 1 页 / 共 4 页
字号:
    <SPAN class=keyword><FONT color=#0000ff>return</FONT></SPAN> (<SPAN class=keyword><FONT color=#0000ff>int</FONT></SPAN>)w;
}

<SPAN class=keyword><FONT color=#0000ff>int</FONT></SPAN> SpeedX[10] = { 17, 15, 13, 11, 9, 7, 5, 4, 3, 2 }; <SPAN class=comment><FONT color=#008000>/* 速度级别 ....*/</FONT></SPAN>
<SPAN class=keyword><FONT color=#0000ff>int</FONT></SPAN> x = 3, y = 20, v = 0, level;    <SPAN class=comment><FONT color=#008000>/* 全局定义:砖块的坐标,速度 .....*/</FONT></SPAN>
Block A, B, C;                      <SPAN class=comment><FONT color=#008000>/* 全局定义:A, B, C三个活动砖块 ..*/</FONT></SPAN>

<SPAN class=keyword><FONT color=#0000ff>void</FONT></SPAN> GameDriver(<SPAN class=keyword><FONT color=#0000ff>void</FONT></SPAN>);
<SPAN class=keyword><FONT color=#0000ff>void</FONT></SPAN> GameView(<SPAN class=keyword><FONT color=#0000ff>void</FONT></SPAN>);

<SPAN class=comment><FONT color=#008000>/*---------------------------------------------------------------------
// 游戏逻辑核心(重要): 每秒循环18.2次,处理砖块移动/下落/消除等逻辑
//---------------------------------------------------------------------*/</FONT></SPAN>
<SPAN class=keyword><FONT color=#0000ff>void</FONT></SPAN> GameMain(<SPAN class=keyword><FONT color=#0000ff>void</FONT></SPAN>)
{
    <SPAN class=keyword><FONT color=#0000ff>long</FONT></SPAN> key, i, j, m, n, old_time = 0;         <SPAN class=comment><FONT color=#008000>/* 定义各变量 .........*/</FONT></SPAN>
    CreateBlock(&amp;A); CreateBlock(&amp;C);           <SPAN class=comment><FONT color=#008000>/* 初始化砖块 .........*/</FONT></SPAN>

    <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (GameMode = 0, v = SpeedX[GameSpeed]; GameMode == 0; TimePass++)
    {
        <SPAN class=keyword><FONT color=#0000ff>while</FONT></SPAN> (clock() == old_time);   <SPAN class=comment><FONT color=#008000>/* 速度控制,clock()为 18.2Hz ..*/</FONT></SPAN>
        old_time = clock();
        nosound();
        key = readkey();               <SPAN class=style4><FONT color=#008200>/* 读入一个键盘消息 ............*/</FONT></SPAN>
<SPAN class=keyword><FONT color=#0000ff>        if</FONT></SPAN> (key == 75) <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (BlockCheck(x - 1, y, &amp;A)) x--;   <SPAN class=comment><FONT color=#008000>/* 左移 ...*/</FONT></SPAN>
        <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (key == 77) <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (BlockCheck(x + 1, y, &amp;A)) x++;   <SPAN class=comment><FONT color=#008000>/* 右移 ...*/</FONT></SPAN>
        <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (key == 80) v = 0;                   <SPAN class=comment><FONT color=#008000>/* 下落: SET v = 0 ....*/</FONT></SPAN>
        <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (key == ' ') {                       <SPAN class=comment><FONT color=#008000>/* 直接下落 ...........*/</FONT></SPAN>
            <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (i = y; i &gt;= 0; i--) <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (!BlockCheck(x, i - 1, &amp;A)) <SPAN class=keyword><FONT color=#0000ff>break</FONT></SPAN>;
            y = i; v = 0;
        }
        <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (key == 27) GameMode = 1;            <SPAN class=comment><FONT color=#008000>/* ESC: 退出游戏 ......*/</FONT></SPAN>
        <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (key == 72) {                        <SPAN class=comment><FONT color=#008000>/* UP: 转动砖块 .......*/</FONT></SPAN>
            Rotate(&amp;A, &amp;B);
            <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (BlockCheck(x, y, &amp;B)) A = B;
        }
        <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (--v &lt;= 0) {                     <SPAN class=comment><FONT color=#008000>/* 到达了下落的时间 .......*/</FONT></SPAN>
            v = SpeedX[GameSpeed];          <SPAN class=comment><FONT color=#008000>/* 重置砖块速度 ...........*/</FONT></SPAN>
            <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (BlockCheck(x, y - 1, &amp;A) == 0) {<SPAN class=comment><FONT color=#008000>/* 如果到达map底部 ....*/</FONT></SPAN>
                <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (i=0, m=y; i&lt;4; i++,m--) <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (j=0,n=x; j&lt;4; j++,n++) 
                    <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (MapCheck(n,m)==0 &amp;&amp; A.d[i][j]) <SPAN class=comment><FONT color=#008000>/* 将A复制到map */</FONT></SPAN>
                        map[m][n] = A.d[i][j];
                A = C;                          <SPAN class=comment><FONT color=#008000>/* 将C复制到A .........*/</FONT></SPAN>
                CreateBlock(&amp;C);                <SPAN class=comment><FONT color=#008000>/* 创建新的C砖块 ......*/</FONT></SPAN>
                <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (y &gt;= 20) GameMode = -1;     <SPAN class=comment><FONT color=#008000>/* 判断死亡 ...........*/</FONT></SPAN>
                <SPAN class=keyword><FONT color=#0000ff>else</FONT></SPAN> y = 20, x = 3;
                GameDriver();                   <SPAN class=comment><FONT color=#008000>/* 消除完成的行 .......*/</FONT></SPAN>
            }   <SPAN class=keyword><FONT color=#0000ff>else</FONT></SPAN> y--;                       <SPAN class=comment><FONT color=#008000>/* 否则:下降 .........*/</FONT></SPAN>
        }
        GameView();                             <SPAN class=comment><FONT color=#008000>/* 显示: 更新屏幕 .....*/</FONT></SPAN>
    }
    <SPAN class=style1><FONT color=#0000ff>while</FONT></SPAN> (kbhit()) getch();                    <SPAN class=style4><FONT color=#008200>/* 按任意键结束 .......*/</FONT></SPAN>
    <SPAN class=style1><FONT color=#0000ff>while</FONT></SPAN> (!kbhit());
    nosound();                                  <SPAN class=style4><FONT color=#008200>/* 关闭扬声器 .........*/</FONT></SPAN>
}

<SPAN class=keyword><FONT color=#0000ff>void</FONT></SPAN> GameDriver(<SPAN class=keyword><FONT color=#0000ff>void</FONT></SPAN>)      <SPAN class=comment><FONT color=#008000>/* 处理消除行 ..............................*/</FONT></SPAN>
{
    <SPAN class=keyword><FONT color=#0000ff>int</FONT></SPAN> inc[5]={10,100,300,600,1000}, count = 0, x, y, k, i, j;

    <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (y = 0; y &lt; 25; y++) <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (; ; count++) { <SPAN class=comment><FONT color=#008000>/* 扫描map测试消行 ...*/</FONT></SPAN>
        <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (x = 0, k = 0; x &lt; 10; x++) k += (map[y][x])? 1 : 0;
        <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (k &lt; 10) <SPAN class=keyword><FONT color=#0000ff>break</FONT></SPAN>;              <SPAN class=comment><FONT color=#008000>/* 计算一行是否可以消去 .......*/</FONT></SPAN>
        <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (j = y; j &lt; 25; j++) memcpy(map[j], map[j+1], 10 * <SPAN class=keyword><FONT color=#0000ff>sizeof</FONT></SPAN>(<SPAN class=keyword><FONT color=#0000ff>int</FONT></SPAN>));
    }
    <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> ((GameScore / 10000) != ((GameScore + inc[count]) / 10000))
    GameSpeed = (GameSpeed + 1) % 10;       <SPAN class=comment><FONT color=#008000>/* 计算速度升级 ...........*/</FONT></SPAN>
    GameScore += inc[count];                <SPAN class=comment><FONT color=#008000>/* 计算新的分数 ...........*/</FONT></SPAN>
    sound((count == 0)? 75 : 900);
}

<SPAN class=keyword><FONT color=#0000ff>void</FONT></SPAN> GameView(<SPAN class=keyword><FONT color=#0000ff>void</FONT></SPAN>)        <SPAN class=comment><FONT color=#008000>/* 绘制:将map里面的砖块绘制到屏幕 .........*/</FONT></SPAN>
{
    <SPAN class=keyword><FONT color=#0000ff>int</FONT></SPAN> i, j, m, n;

    <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (i=0; i&lt;10; i++) <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (j=0; j&lt;20; j++) <SPAN class=comment><FONT color=#008000>/* 更新TextBck二级缓存 ..*/</FONT></SPAN>
        TextBck[j][i] = map[j][i];
    <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (i=0, n=x; i&lt;4; i++, n++) <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (j = 0, m=y; j &lt; 4; j++, m--)
        <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (m&gt;=0&amp;&amp;m&lt;20 &amp;&amp; n&gt;=0&amp;&amp;n&lt;10 &amp;&amp; A.d[j][i]) TextBck[m][n] = A.d[j][i];

    <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (i = 0; i &lt; 10; i++) <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (j = 0; j &lt; 20; j++) { <SPAN class=comment><FONT color=#008000>/* 显示地图 ...*/</FONT></SPAN>
        m = TextBck[19 - j][i], n = i * 2;
        SCREEN(n+1,j+1) = (m)? <SPAN class=style2><FONT color=#ff00ff>'['</FONT></SPAN>:<SPAN class=style2><FONT color=#ff00ff>'.'</FONT></SPAN>, SCOLOR(n+1,j+1) = (m)? cmap[m] : 8;
        SCREEN(n+2,j+1) = (m)? <SPAN class=style2><FONT color=#ff00ff>']'</FONT></SPAN>:<SPAN class=style2><FONT color=#ff00ff>'.'</FONT></SPAN>, SCOLOR(n+2,j+1) = (m)? cmap[m] : 8;
    }
    <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (j = 0; j &lt; 4; j++) <SPAN class=keyword><FONT color=#0000ff>for</FONT></SPAN> (i = 0; i &lt; 4; i++) {   <SPAN class=comment><FONT color=#008000>/* 显示下个砖块*/</FONT></SPAN>
        m = C.d[j][i], n = 160 * (j + 8) + 4 * i + 58;
        TextBuf[n+0] = (m)? <SPAN class=style2><FONT color=#ff00ff>'['</FONT></SPAN>:<SPAN class=style2><FONT color=#ff00ff>'.'</FONT></SPAN>, TextBuf[n+1] = (m)? cmap[m] : 8;
        TextBuf[n+2] = (m)? <SPAN class=style2><FONT color=#ff00ff>']'</FONT></SPAN>:<SPAN class=style2><FONT color=#ff00ff>'.'</FONT></SPAN>, TextBuf[n+3] = (m)? cmap[m] : 8;
    }
    <SPAN class=keyword><FONT color=#0000ff>if</FONT></SPAN> (TimePass &amp; 3) <SPAN class=keyword><FONT color=#0000ff>return</FONT></SPAN>;
    textcolor(<SPAN class=style3><FONT color=#666666>0xa</FONT></SPAN>-8);
    gotoxy(30,1); printf(<SPAN class=style2><FONT color=#ff00ff>"POSITION: [%2d,%2d]"</FONT></SPAN>, x, y);  <SPAN class=comment><FONT color=#008000>/* 显示分数等 .*/</FONT></SPAN>
    gotoxy(30,2); printf(<SPAN class=style2><FONT color=#ff00ff>"SPEED: %d"</FONT></SPAN>, GameSpeed);
    gotoxy(30,6); printf(<SPAN class=style2><FONT color=#ff00ff>"SCORE: "</FONT></SPAN>); cprintf(<SPAN class=style2><FONT color=#ff00ff>"%ld"</FONT></SPAN>, GameScore);
    gotoxy(30,5); printf(<SPAN class=style2><FONT color=#ff00ff>"TIME:  "</FONT></SPAN>);                    <SPAN class=comment><FONT color=#008000>/* 显示时间 ...*/</FONT></SPAN>
    m = (<SPAN class=keyword><FONT color=#0000ff>int</FONT></SPAN>)(TimePass / 18.2) / 60, n = (<SPAN class=keyword><FONT color=#0000ff>int</FONT></SPAN>)(TimePass / 18.2) % 60;
    cprintf(<SPAN class=style2><FONT color=#ff00ff>"%d%d:%d%d"</FONT></SPAN>, (m/10), (m%10), (n/10), (n%10));
    gotoxy(1, 23);
}


</PRE><BR></FONT></TD></TR></TBODY></TABLE></TD></TR>
                    <TR>
                      <TD width="100%" height=25>
                        <DIV align=center>
                        <CENTER>点击图标下载附件<BR><A title=点击这里下载 
                        href="http://www.cstudyhome.com/wenzhang06/uploadfile/5493-1.rar" 
                        target=_blank><IMG 
                        src="MINI-FOOLTRS 最简俄罗斯(一百多行)_files/rar.gif" 
                        border=0></A></CENTER></DIV></TD></TR>
                    <TR>
                      <TD width=255 height=20><A class=bottom 
                        href="http://www.cstudyhome.com/wenzhang06/review.asp?NewsID=5493" 
                        target=_blank>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
                        height=18 src="MINI-FOOLTRS 最简俄罗斯(一百多行)_files/icon1.gif" 
                        width=18 border=0> <FONT color=blue>发表评论</FONT></A> 
                    </TD></TR>
                    <TR>
                      <TD width="100%">
                        <HR SIZE=1>
                      </TD></TR>
                    <TR>
                      <TD height=8></TD></TR>
                    <TR>
                      <TD width="100%" height=18><B>相关专题:</B> 
                    <TR>
                      <TD width="100%">
                        <HR SIZE=1>
                      </TD></TR>
                    <TR>
                      <TD height=8></TD></TR>
                    <TR>
                      <TD width="100%" height=18><B>相关信息:</B></TD></TR>
                    <TR>
                      <TD height=8></TD></TR>
                    <TR>
                      <TD width="100%">&nbsp;没有相关信息</TD></TR>
                    <TR>
                      <TD width="100%">
                        <HR SIZE=1>
                      </TD></TR>
                    <TR>
                      <TD height=8></TD></TR>
                    <TR>
                      <TD width="100%"><B>相关评论:</B></TD></TR>
                    <TR>
                      <TD height=8></TD></TR>
                    <TR>
                      <TD width="100%"></TD></TR>
                    <TR>
                      <TD>
                        <TABLE cellSpacing=0 cellPadding=5 width="100%" 
border=0>
                          <TBODY>
                          <TR bgColor=#d1e4fc>
                            <TD 
                              width="100%">发表人:快乐的飞&nbsp;&nbsp;&nbsp;发表人邮件:<A 
                              href="mailto:lf17336096@163.com">lf17336096@163.com</A>&nbsp;&nbsp;&nbsp;发表时间:2005-5-16 
                              19:41:56</TD>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -