C语言经典游戏代码大全(珍藏版)

C语言经典游戏代码大全(珍藏版)C 语言经典游戏代码大全 珍藏版 C 语言经典游戏代码大全 珍藏版 C 语言经典游戏代码大全 珍藏版 c 语言游戏代码

大家好,欢迎来到IT知识分享网。

一、最经典游戏之俄罗斯方块C语言经典游戏代码大全(珍藏版)
#include<iostream>
#include<math.h>
#include<Windows.h>
#include<conio.h>
#include<ctime>
using namespace std;
 
enum DIR
{

    UP,
    RIGHT,
    DOWN,
    LEFT
};
 
time_t start = 0, finish = 0;
 
int _x = 6, _y = 1;//图形生成位置
 
int map[30][16] = { 0 };
 
int sharp[20][8] = {

    {0,0,0,0,0,0,0,0},
    //I形
    {0,0,0,1,0,2,0,3},
    {0,0,1,0,2,0,3,0},
    //■形
    {0,0,1,0,0,1,1,1},
    //L形
    {0,0,0,1,0,2,1,2},
    {0,0,0,1,1,0,2,0},
    {0,0,1,0,1,1,1,2},
    {0,1,1,1,2,0,2,1},
    //J形
    {0,2,1,0,1,1,1,2},
    {0,0,0,1,1,1,2,1},
    {0,0,0,1,0,2,1,0},
    {0,0,1,0,2,0,2,1},
    //Z形
    {0,0,1,0,1,1,2,1},
    {0,1,0,2,1,0,1,1},
    //S形
    {0,1,1,0,1,1,2,0},
    {0,0,0,1,1,1,1,2},
    //T形
    {0,1,1,0,1,1,2,1},
    {0,0,0,1,0,2,1,1},
    {0,0,1,0,1,1,2,0},
    {0,1,1,0,1,1,1,2}
};
 
 
class Game
{

public:
    int score;//游戏分数
    int _id;//图形编号
    int top;//最高点高度
    int speed;//下落速度
 
    Game();
    void showMenu();//显示菜单
    void showGround();//显示游戏界面
    void gameOver();//游戏结束界面
    void Run();//运行游戏
    void sharpDraw(int id, bool show = false);//绘制图形
    void keyControl();//键盘控制
    bool move(int dir, int id);//移动判断
    bool downSet(int id);//下落
    void Turn(int id);//旋转
    void clean();//消行
};
 
void SetPos(int i, int j)//控制光标位置, 列, 行
{

    COORD pos = { i,j };
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
 
int main()
{

    CONSOLE_CURSOR_INFO cursor;
    GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor);
    cursor.bVisible = 0;    //这四行用来设置光标不显示
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor);
 
    srand((unsigned)time(NULL));
 
    Game game;
    game.showMenu();
    return 0;
}
 
Game::Game()
{

    score = 0;
    _id = 0;
    top = 58;
    speed = 1000;
}
 
void Game::showMenu()
{

    for (int i = 0; i < 30; i++)
    {

        for (int j = 0; j < 26; j++)
        {

            if ((i == 0 || i == 29) || (j == 0 || j == 25))
            {

                cout << “■”;
            }
            else
            {

                cout << ”  “;
            }
        }
        cout << endl;
    }
 
    SetPos(17, 8);
    cout << “俄 罗 斯 方 块” << endl;
    SetPos(13, 12);
    cout << “↑旋转方块  ↓加速下滑” << endl;
    SetPos(12, 14);
    cout << “← →左右移动  空格  暂停” << endl;
    SetPos(15, 20);
    cout << “0 退出  Enter 开始” << endl;
 
    while (1)
    {

        int select = _getch();
        if (select == 13)
        {

            system(“cls”);
            this->Run();
        }
        else if (select = 48)
        {

            system(“cls”);
            exit(0);
        }
    }
}
 
void Game::showGround()
{

    for (int i = 0; i < 30; i++)
    {

        for (int j = 0; j < 26; j++)
        {

            if ((i == 0 || i == 29) || (j == 0 || j == 25 || j == 15))
            {

                cout << “■”;
            }
            else if (i == 15 && j > 15)
            {

                cout << “■”;
            }
            else
            {

                cout << ”  “;
            }
        }
        cout << endl;
    }
 
    SetPos(31, 2);
    cout << “下 个图形” << endl;
    SetPos(31, 17);
    cout << “当 前得分” << endl;
 
    for (int i = 0; i < 30; i++)
    {

        for (int j = 0; j < 16; j++)
        {

            if ((i == 0 || i == 29) || (j == 0 || j == 15))
            {

                map[i][j] = 1;
            }
            else
            {

                map[i][j] = 0;
            }
        }
    }
}
 
void Game::gameOver()
{

    for (int i = 5; i < 15; i++)
    {

        SetPos(1, i);
        cout << ”                            ” << endl;
    }
 
    SetPos(8, 7);
    cout << “G a m e   O v e r” << endl;
 
    SetPos(3, 10);
    cout << “0 退出   Enter 重新开始” << endl;
 
    while (1)
    {

        int select = _getch();
        if (select == 13)
        {

            system(“cls”);
            this->Run();
        }
        else if (select == 48)
        {

            system(“cls”);
            exit(0);
        }
    }
 
}
 
void Game::Run()
{

    score = 0;
    _id = 0;
    top = 58;
    _x = 6;
    _y = 1;
    showGround();
    start = clock();
    int new_id = rand() % 19 + 1;
 
    while (1)
    {

        sharpDraw(_id);
        keyControl();
 
        if (downSet(_id))
        {

            sharpDraw(-new_id, 1);
            _id = new_id;
            new_id = rand() % 19 + 1;
            sharpDraw(new_id, 1);
            clean();
        }
 
        SetPos(34, 20);
        cout << score << endl;
    }
}
 
void Game::sharpDraw(int id, bool show)
{

    int x, y;
 
    if (show == true)
    {

        if (id > 0)
        {

            for (int i = 0; i < 4; i++)
            {

                x = 19 + sharp[id][2 * i];
                y = 6 + sharp[id][2 * i + 1];
                SetPos(2 * x, y);
                cout << “■”;
            }
        }
        else
        {

            for (int i = 0; i < 4; i++)
            {

                x = 19 + sharp[-id][2 * i];
                y = 6 + sharp[-id][2 * i + 1];
                SetPos(2 * x, y);
                cout << ”  “;
            }
        }
        return;
    }
 
 
    if (id > 0)
    {

        for (int i = 0; i < 4; i++)
        {

            x = _x + sharp[id][2 * i];
            y = _y + sharp[id][2 * i + 1];
            SetPos(2 * x, y);
            cout << “■”;
        }
    }
    else
    {

        for (int i = 0; i < 4; i++)
        {

            x = _x + sharp[-id][2 * i];
            y = _y + sharp[-id][2 * i + 1];
            SetPos(2 * x, y);
            cout << ”  “;
        }
    }
    return;
 
}
 
bool Game::downSet(int id)
{

    if (id == 0)
        return true;
 
    finish = clock();
 
    if (finish – start < speed)
    {

        return false;
    }
 
    start = clock();
 
    if (!move(DOWN, _id))
    {

        int x, y;
        for (int i = 0; i < 4; i++)
        {

            x = _x + sharp[id][2 * i];
            y = _y + sharp[id][2 * i + 1];
            map[y][x] = 1;
 
            if (y < top)
            {

                top = y;
            }
            if (top <= 1)
            {

                gameOver();
            }
        }
        _x = 6;
        _y = 1;
        return true;
    }
 
    sharpDraw(-id);
    _y++;
    sharpDraw(id);
    return false;
}
 
bool Game::move(int dir, int id)
{

    int x, y;
    switch (dir)
    {

    case UP:
        for (int i = 0; i < 4; i++)
        {

            x = _x + sharp[id][2 * i];
            y = _y + sharp[id][2 * i + 1];
            if (map[y][x] == 1)
            {

                return false;
            }
        }
        break;
    case DOWN:
    {

        for (int i = 0; i < 4; i++)
        {

            x = _x + sharp[id][2 * i];
            y = _y + sharp[id][2 * i + 1];
            if (map[y + 1][x] == 1)
            {

                return false;
            }
        }
    }
    break;
    case RIGHT:
    {

        for (int i = 0; i < 4; i++)
        {

            x = _x + sharp[id][2 * i];
            y = _y + sharp[id][2 * i + 1];
            if (map[y][x + 1] == 1)
            {

                return false;
            }
        }
    }
    break;
    case LEFT:
    {

        for (int i = 0; i < 4; i++)
        {

            x = _x + sharp[id][2 * i];
            y = _y + sharp[id][2 * i + 1];
            if (map[y][x – 1] == 1)
            {

                return false;
            }
        }
    }
    break;
    default:
        break;
    }
    return true;
}
 
void Game::Turn(int id)
{

    switch (id)
    {

    case 1:id++; break;
    case 2:id–; break;
 
    case 3: break;
 
    case 4:id++; break;
    case 5:id++; break;
    case 6:id++; break;
    case 7:id -= 3; break;
 
    case 8:id++; break;
    case 9:id++; break;
    case 10:id++; break;
    case 11:id -= 3; break;
 
    case 12:id++; break;
    case 13:id–; break;
 
    case 14:id++; break;
    case 15:id–; break;
 
    case 16:id++; break;
    case 17:id++; break;
    case 18:id++; break;
    case 19:id -= 3; break;
 
    default:
        break;
    }
 
    if (!move(UP, id))
    {

        return;
    }
 
    sharpDraw(-_id);
    _id = id;
}
 
void Game::keyControl()
{

    if (!_kbhit())
        return;
 
    int key = _getch();
 
    switch (key)
    {

    case 72:
        Turn(_id);
        break;
    case 80:
        if (move(DOWN, _id))
        {

            sharpDraw(-_id);
            _y++;
        }
        break;
    case 75:
        if (move(LEFT, _id))
        {

            sharpDraw(-_id);
            _x–;
        }
        break;
    case 77:
        if (move(RIGHT, _id))
        {

            sharpDraw(-_id);
            _x++;
        }
        break;
    case 32:
    {

        for (int i = 5; i < 15; i++)
        {

            SetPos(1, i);
            cout << ”                            ” << endl;
        }
 
        SetPos(10, 7);
        cout << “游 戏 暂 停” << endl;
 
        SetPos(3, 10);
        cout << “0 返回菜单  回车 继续游戏” << endl;
 
        while (1)
        {

            int select = _getch();
 
            if (select == 13)
            {

                for (int i = 5; i < 15; i++)
                {

                    SetPos(1, i);
                    cout << ”                            ” << endl;
                }
                break;
            }
            else if (select == 48)
            {

                system(“cls”);
                showMenu();
            }
        }
 
    }
    default:
        break;
    }
}
 
void Game::clean()
{

    int n = -1;
    int line = -1;
    while (1)
    {

        for (int i = 28; i > 0; i–)
        {

            for (int j = 1; j < 15; j++)
            {

                line = i;
                if (map[i][j] == 0)
                {

                    line = -1;
                    break;
                }
            }
            if (line != -1)
                break;
        }
 
        if (line == -1)
            break;
 
        for (int i = line; i > 0; i–)
        {

            for (int j = 1; j < 15; j++)
            {

                if (i == 1)
                    map[i][j] = 0;
                else
                {

                    map[i][j] = map[i – 1][j];
                    SetPos(2 * j, i);
                    if (map[i][j] == 1)
                        cout << “■”;
                    else
                        cout << ”  “;
                }
            }
        }
        top++;
        n++;
    }
 
    if (n >= 0)
    {

        score += n * n * 100 + 100;
        if (speed > 100)
            speed = 1000 – score / 10;
    }
}





























































































































































































































































































































































































































































































































































































```python class BertPooler(nn.Module): def __init__(self, config): super().__init__() self.dense = nn.Linear(config.hidden_size, config.hidden_size) self.activation = nn.Tanh() def forward(self, hidden_states): # We "pool" the model by simply taking the hidden state corresponding # to the first token. first_token_tensor = hidden_states[:, 0] pooled_output = self.dense(first_token_tensor) pooled_output = self.activation(pooled_output) return pooled_output from transformers.models.bert.configuration_bert import * import torch config = BertConfig.from_pretrained("bert-base-uncased") bert_pooler = BertPooler(config=config) print("input to bert pooler size: {}".format(config.hidden_size)) batch_size = 1 seq_len = 2 hidden_size = 768 x = torch.rand(batch_size, seq_len, hidden_size) y = bert_pooler(x) print(y.size()) ```

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/119661.html

(0)
上一篇 2025-11-03 21:26
下一篇 2025-11-03 21:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信