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

📄 frame.c

📁 QT 做的俄罗斯方快 基于LINUX下的
💻 C
字号:
#include "stdio.h"#include "block.h"RussiaBlock * russia_block = NULL;static void add_match(RussiaBlock * rb){    RBOPS * rb_ops = rb->rb_ops;    if (rb_ops->add_match)        rb_ops->add_match(rb);}static inline int match_ready(RussiaBlock * rb){    return ((rb->match[0]->status & PLAYER_READY)                && (rb->match[1]->status & PLAYER_READY));}static void init_match_player(RussiaBlock * rb){    int i;    for (i = 0; i < 2; i++)        init_player(rb, rb->match[i]);}static void game_start(RussiaBlock * rb){    switch (rb->type) {    case GAMETYPE_ALONE_MATCH:    {        if (!(rb->match[0] && rb->match[1]))            ;        else if (match_ready(rb))            rb->status |= STATUS_RUN;        else            rb->status &= ~STATUS_RUN;    }    break;    case GAMETYPE_ALONE_SINGLE:        if (rb->match[0] && (rb->match[0]->status & PLAYER_READY))            rb->status |= STATUS_RUN;        else            rb->status &= ~STATUS_RUN;    break;    case GAMETYPE_COMPUTER_MATCH:    break;    case GAMETYPE_ONLINE_SERVER:        if (!(rb->match[0] && rb->match[1]))            add_match(rb);        else if (match_ready(rb)) {            rb->status |= STATUS_RUN;            init_match_player(rb);        }        else            rb->status &= ~STATUS_RUN;    break;    case GAMETYPE_ONLINE_CLIENT:    break;    }}/*接收玩家数据(本地主要是控制事件, 网络包括输入输出等信息)*/static void recv_player_data(RussiaBlock * rb){    RBOPS * rb_ops = rb->rb_ops;    if (rb_ops->recv_player_data)        rb_ops->recv_player_data(rb);}/*发送玩家数据件*/static void send_player_data(RussiaBlock * rb){    RBOPS * rb_ops = rb->rb_ops;    if (rb_ops->send_player_data)        rb_ops->send_player_data(rb);}/*刷新屏幕*/static int refresh_screen(RussiaBlock * rb, Mtime time){    IOOPS * io_ops = rb->io_ops;    if (io_ops->refresh_screen)        io_ops->refresh_screen(time);}static int exec_misc_cmd(RussiaBlock * rb){    if (rb->rb_ops->exec_misc_cmd)        rb->rb_ops->exec_misc_cmd(rb);}void clock_frame(Mtime time){    add_player(russia_block);    recv_player_data(russia_block);    if (!(russia_block->status & STATUS_RUN))        game_start(russia_block);    else        game_frame(russia_block, time);    send_player_data(russia_block);    exec_misc_cmd(russia_block);    refresh_screen(russia_block, time);    return;}

⌨️ 快捷键说明

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