当前位置: 首页 > 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.jsqmd.com/news/160268/

相关文章:

  • 【Java毕设全套源码+文档】基于springboot的垃圾分类回收管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 大模型应用工程师的真实薪资曝光:入行门槛、发展路径与2026年招聘趋势全解析!
  • 2025-2026长途搬家公司最新TOP3推荐出炉!甘肃蚂蚁搬家彰显专业实力 - 深度智识库
  • 计算机专业大学生必读:CTF 比赛值得打吗?一文讲透参赛要求与获奖好处!
  • 深入浅出解析具身智能:技术栈、实践案例与代码实现
  • 2026年宁夏银川GEO AI优化公司最新综合实力调研排行
  • 学习通越过手机客户端限制考试/作业
  • 2025年防火槽式桥架怎么选?这份优质厂家推荐榜单请收好 - 深度智识库
  • 【Java毕设源码分享】基于springboot+vue的家政预约平台的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 0332-Tetris-封装显示窗口
  • GitHub Issue模板设计:提高PyTorch项目协作效率
  • AI for Science技术解析:从方法论到前沿应用的全视角洞察
  • Docker Compose编排PyTorch服务集群
  • 2025年扭蛋机合作/联营/加盟厂家推荐:杭州心动潮玩科技,智能扭蛋机全系运营方案 - 品牌推荐官
  • 2025垃圾渗滤液运维服务TOP5企业权威推荐:达泽环保行业地位高 - mypinpai
  • 【Java毕设全套源码+文档】基于springboot的个性化推荐影院网站设计与实现(丰富项目+远程调试+讲解+定制)
  • 【Java毕设全套源码+文档】基于springboot的小型民营加油站管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • YOLOv11模型权重文件下载地址汇总
  • 2025角钢厂家权威榜单推荐:镀锌角钢/万能角钢架/冲孔角钢/万能角钢/热镀锌万能角钢源头厂家精选 - 品牌推荐官
  • 【Java毕设全套源码+文档】基于springboot的家政预约平台的设计与实现(丰富项目+远程调试+讲解+定制)
  • 我惊了!别再吹人类独有创造力了!Nature子刊:在这项测试中,LLM已经碾压人类!
  • SSH X11转发显示PyTorch可视化图形
  • Disk quota exceeded错误应对:PyTorch训练日志管理
  • 2025最新全车型充电桩厂家十大品牌推荐:覆盖重卡/汽车/电动车补能全场景 - 深度智识库
  • Spring Security、Apache Shiro、Sa-Token,主流安全框架如何选择?
  • 怎么建立一套科学的碳排放管理体系?工业制造企业必看
  • AbMole丨Etoposide:从DNA损伤到组蛋白乙酰化调控的研究工具
  • SDET vs 测试开发工程师:数字化时代的测试角色进化论
  • 【Java毕设全套源码+文档】基于springboot的大学生志愿者信息管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 为什么说巧手智心STEM特别适合尝试做科技特色教育的幼儿园?