第50讲

今日结果:(线程作业讲解和线程知识扩展)
1  void *argv;   fd = *((int*)argv);  // 整型强转取值。
2 线程属性: 一般设置是否绑定,是否分离(涉及轻进程:可以理解为内核线程,它位于用户层和系统层之间。
线程绑定: 一个轻进程可以控制一个或多个线程,默认的轻进程控制那些线程有系统决定; 绑定则是将线程“绑”在一个轻进程中,被绑定的线程具有较高的响应速度,因为CPU的时间片是面向轻进程的。
· 线程的分离: 默认为非分离的状态(决定一个线程以什么方式来终止自己。)
pthread_attr_t  attr = {0};   //定义线程属性的对象
ptread_attr_init(&attr);      // 初始化线程的属性   (  属性值是在pthread_create(...) 函数的第二个参数中
pthread_attr_setscope(...);    //   设置线程绑定属性
pthread_attr_sedetachstate(...) ;   // 设置线程分离属性


明日计划:编写客户端离线也能接收消息(其中用共享内存来存储),第二个,用qt编写一个有界面的客户端通信界面。如果有时间的话对以前的知识进行复习和了解第三阶段的项目要求。


感想:现在好像感觉时间过的很快,对自己来说想要做的事就必须做到合理的安排,有一种认真负责的态度。真心的喜欢它,全心全意的投入。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,让我们开始制作一个简单的JS超级玛丽小游戏吧! 首先,我们需要一个画布和一个可以控制的角色。我们可以使用HTML5 Canvas来创建游戏画面,然后使用JavaScript控制角色的移动。 HTML代码: ``` <canvas id="gameCanvas" width="800" height="600"></canvas> ``` 接下来,我们需要一个JavaScript文件来控制游戏逻辑。我们首先定义一个Game类,它包含游戏的各种元素和方法。我们还需要定义一个角色类,它包含角色的属性和方法。 JS代码: ``` // 定义角色类 class Character { constructor(x, y, width, height, speed) { this.x = x; this.y = y; this.width = width; this.height = height; this.speed = speed; } moveLeft() { this.x -= this.speed; } moveRight() { this.x += this.speed; } moveUp() { this.y -= this.speed; } moveDown() { this.y += this.speed; } } // 定义游戏类 class Game { constructor(canvasId) { this.canvas = document.getElementById(canvasId); this.ctx = this.canvas.getContext("2d"); this.character = new Character(100, 100, 50, 50, 5); this.keysPressed = {}; this.setupEventListeners(); } // 监听键盘事件 setupEventListeners() { document.addEventListener("keydown", (e) => { this.keysPressed[e.key] = true; }); document.addEventListener("keyup", (e) => { delete this.keysPressed[e.key]; }); } // 更新游戏状态 update() { if (this.keysPressed["ArrowLeft"]) { this.character.moveLeft(); } if (this.keysPressed["ArrowRight"]) { this.character.moveRight(); } if (this.keysPressed["ArrowUp"]) { this.character.moveUp(); } if (this.keysPressed["ArrowDown"]) { this.character.moveDown(); } } // 渲染画面 render() { this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); this.ctx.fillStyle = "blue"; this.ctx.fillRect( this.character.x, this.character.y, this.character.width, this.character.height ); } // 开始游戏循环 start() { setInterval(() => { this.update(); this.render(); }, 1000 / 60); } } // 创建游戏实例并开始游戏 const game = new Game("gameCanvas"); game.start(); ``` 在这个代码中,我们首先定义了一个Character类和一个Game类。Character类包含角色的属性和移动方法,Game类包含游戏的各种元素和方法,包括角色、键盘事件监听、更新游戏状态、渲染画面和开始游戏循环。 在Game类的构造函数中,我们创建了一个角色实例,并设置了键盘事件监听。在update()方法中,我们根据按下的键盘键来移动角色。在render()方法中,我们清除画布并绘制角色。在start()方法中,我们使用setInterval()来循环更新游戏状态和渲染画面。 现在我们可以在网页上看到一个蓝色的方块,我们可以使用方向键来控制它的移动了。接下来,我们可以添加更多的元素和功能来完善这个小游戏,比如障碍物、积分、生命值、敌人等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Macle_Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值