当前位置: 首页 > news >正文

0335-Tetris-渲染方块

环境

  • Time 2023-08-22
  • Zig 0.11.0
  • WSL-Ubuntu 22.04.3 LTS

前言

说明

参考资料:

  1. https://www.youtube.com/watch?v=nF_crEtmpBo
  2. https://github.com/howprice/sdl2-tetris

目标

手动将各种方块渲染到屏幕上。
方块定义 block.zig 文件,先手动将 tetriminoes 定义为 pub,手动画后,再修改回私有。

main.zig

const c = @import("c.zig");
const display = @import("display.zig");
const block = @import("block.zig");pub fn main() !void {var screen = display.Screen{};screen.init();defer screen.deinit();mainLoop: while (true) {var event: c.SDL_Event = undefined;while (c.SDL_PollEvent(&event) != 0) {if (event.type == c.SDL_QUIT)break :mainLoop;}screen.update();var tetrimino = block.tetriminoes[0];draw(&tetrimino, &screen);tetrimino = block.tetriminoes[1];tetrimino.y = 3;draw(&tetrimino, &screen);tetrimino = block.tetriminoes[2];tetrimino.y = 6;draw(&tetrimino, &screen);tetrimino = block.tetriminoes[3];tetrimino.y = 9;draw(&tetrimino, &screen);tetrimino = block.tetriminoes[4];tetrimino.y = 12;draw(&tetrimino, &screen);tetrimino = block.tetriminoes[5];tetrimino.y = 15;draw(&tetrimino, &screen);tetrimino = block.tetriminoes[6];tetrimino.y = 18;draw(&tetrimino, &screen);screen.present();}
}fn draw(tetrimino: *block.Tetrimino, screen: *display.Screen) void {const value = tetrimino.position();var index: usize = 0;while (index < value.len) : (index += 2) {const row: usize = @intCast(tetrimino.x + value[index]);const col: usize = @intCast(tetrimino.y + value[index + 1]);screen.draw(row, col, tetrimino.color);}
}

效果

渲染各种方块

总结

手动渲染了各种方块,将其排列成一竖排。

附录

http://www.zskr.cn/news/175613.html

相关文章:

  • 计算机专业大学生必读:CTF 比赛值得打吗?一文讲透参赛要求与获奖好处!
  • 深入浅出解析具身智能:技术栈、实践案例与代码实现
  • 【Java毕设全套源码+文档】基于springboot的个性化推荐影院网站设计与实现(丰富项目+远程调试+讲解+定制)
  • 【Java毕设全套源码+文档】基于springboot的小型民营加油站管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • YOLOv11模型权重文件下载地址汇总
  • SSH X11转发显示PyTorch可视化图形
  • 我惊了!别再吹人类独有创造力了!Nature子刊:在这项测试中,LLM已经碾压人类!
  • SDET vs 测试开发工程师:数字化时代的测试角色进化论
  • 分龄护肤,以专业水光技术与光电保养,为肌肤注入冬日“热水” - 速递信息
  • 2025智能清洁设备TOP5权威测评:智然达智能清洁设备可以信任吗? - 工业推荐榜
  • 观Ace Studio定价争议一事有感而发,随便聊聊
  • 李易泽
  • Transformer自注意力机制可视化工具推荐
  • 红日靶场1
  • 多GPU训练踩坑总结:NCCL timeout错误规避方法
  • 2025年油压机厂家权威推荐榜:单臂/二梁四柱/伺服/C型/龙门油压机源头厂家精选 - 品牌推荐官
  • 为什么PyTorch-CUDA镜像更适合生产环境部署?
  • 国产操作系统课程实战:Vim 编辑器从入门到高效编程
  • 帅邦油烟机满意度怎么样?烟机实力及创新能力评测排名 - 工业品牌热点
  • 2026北京房山区继承律师事务所口碑排名白皮书——权威解析靠谱律所选择指南 - 苏木2025
  • 2025年重庆三角洲升级陪玩服务商推荐榜:重庆哈基桃文化传媒,三角洲陪练俱乐部/三角洲陪玩/三角洲陪练升级/三角洲行动陪玩/三角洲陪玩俱乐部服务商精选 - 品牌推荐官
  • Docker 部署 OpenVidu
  • 华美食品性价比好不好?专业度/规模年度排名,5大烘焙品牌深度测评推荐 - mypinpai
  • PyTorch官方发布v2.7更新亮点及对CUDA的支持改进
  • Java工程师转型大模型开发指南:结合现有技术优势,实现AI落地的关键步骤!
  • 高杆路灯哪些品牌口碑好、哪家产品耐用性强? - 工业设备
  • 2025年北方地区新中式家具品牌口碑排名:库岸新中式家具好不好 - 工业品网
  • 优质论文搜索网站推荐与使用指南:高效查找学术资源的实用工具
  • 简单理解:为什么错误计数器一般要选 uint32_t 类型?
  • 2025年高杆路灯源头厂家年度排名:高杆路灯生产厂哪家更值得选? - mypinpai