EasyX图形库游戏开发第三天
EasyX图形库游戏开发第三天
今日目标
昨天已经实现了鼠标检测功能和场景切换,今天要做的是控制移动和边界限制,最后为了方便管理我与同学上的代码的不同情况,我决定为项目建立一个git仓库方便管理,虽然clion的code with me功能也很好用,但是我和我同学的课程不同,所以code with me 功能并不能满足我们的要求,git就成了我们的选择,这样谁都可以对代码进行更新。
我找了一些素材,下面这些就是我游戏中用到的图片
游戏背景
地面背景
退出按钮
开始按钮
主菜单背景
游戏场景布置
这是上文中图片我的加载代码
1 | loadimage(&bk, _T("image/background.png"),WIDTH,HEIGTH); //背景 |
我定义了一个putgamebk函数用来生成游戏场景,因为图片是三块砖,所以我选择了循环for绘制,将地面铺了出来
记得裁剪好砖块大小,上面的已经裁剪好了
1 | void putgamebk() |
游戏角色控制和边界判断
目前先用一个小球代替,接下来要实现的是控制小球移动
首先在头文件game.h中定义一个枚举类型用于实现移动逻辑
1 | enum DIR //枚举类型 |
我们还需要定义一个人物坐标,我选择POINT结构体其实是懒得自己定义,C语言 POINT结构体 / 点类型_c语言point-CSDN博客
Windows API 中的 POINT 结构体
定义如下:
1 | typedef struct tagPOINT { |
我定义了一个playerPos用来记录初始位置
1 | POINT playerPos={30,450}; //初始小球的圆心 |
下面是角色移动代码实现
1 | void palyGame() |
主程序部分
BeginBatchDraw()的作用EasyX 文档 - BeginBatchDraw
EndBatchDraw()的作用EasyX 文档 - EndBatchDraw
solidcircle(playerPos.x,playerPos.y,30)的作用EasyX 文档 - solidcircle
Sleep(50)的作用【C语言】Sleep()函数—-详解_sleep函数-CSDN博客
如果不加最上面两句会使得小球之前移动的位置还留着一个小球
主程序中的if语句后续会更改,目前只是适用于当前的开发
1 | int main() |
git仓库配置
记得先看一遍教程,看看提示,还有看一下最后我的总结,以及我遇到的问题
Git 详细安装教程(详解 Git 安装过程的每一个步骤)git安装-CSDN博客
Git 分支交互式学习(通过可视化练习掌握分支操作)
Git - 安装 Git(windows安装)
一、Git 基础概念与安装配置
1. Git 是什么?
Git 是一款分布式版本控制系统,由 Linus Torvalds 为管理 Linux 内核开发而设计。与传统的集中式版本控制系统(如 SVN)不同,Git 允许每个开发者拥有完整的代码仓库副本,支持离线操作和高性能分支管理
2. 安装与基础配置
安装:从 Git 官网 下载对应系统的安装包,按默认选项完成安装
配置用户信息:
1
2git config --global user.name "你的名字"
git config --global user.email "你的邮箱"此配置会应用到本机的所有仓库59。
3. 仓库初始化
创建本地仓库:
1
git init
初始化后,目录下会生成隐藏的
.git
文件夹,包含版本库的所有信息
二、核心操作:提交、分支与版本控制
1. 提交代码的三步曲
添加文件到暂存区:
1
2git add <文件名> # 添加单个文件
git add . # 添加所有修改提交到本地仓库
1
git commit -m "提交说明"
推送到远程仓库:
1
git push origin <分支名>
注意:
- 提交注释规范:建议首行用简短动词(如
Fix: 修复登录问题
),第二行空行后补充细节 - 避免提交垃圾文件:通过
.gitignore
忽略临时文件、编译产物等(如.idea/
、node_modules/
)
2. 分支管理
创建与切换分支:
1
2
3git branch <分支名> # 创建分支
git checkout <分支名> # 切换分支
git checkout -b <分支名> # 创建并切换合并分支:
1
git merge <分支名> # 将指定分支合并到当前分支
冲突解决:手动编辑冲突文件后,执行
git add
和git commit
完成合并
3. 版本回退与撤销
查看历史版本:
1
2git log # 完整日志
git log --oneline # 简洁日志回退到指定版本:
1
git reset --hard <commit-id>
若丢失版本号,可用
git reflog
查看操作历史。撤销工作区修改:
1
2git checkout -- <文件名> # 撤销未暂存的修改
git reset HEAD <文件名> # 撤销暂存区的修改
三、高频问题与解决方案
1. 推送代码失败
认证失败:
- HTTPS 方式:改用 SSH 密钥认证(生成密钥:
ssh-keygen -t ed25519
,并添加到远程平台如 GitHub - 权限不足:检查远程仓库的权限设置,或取消分支保护
- HTTPS 方式:改用 SSH 密钥认证(生成密钥:
冲突提示:
1
2
3
4git pull # 拉取远程代码
# 解决冲突后重新提交
git add . && git commit -m "解决冲突"
git push
2. 误提交文件到远程仓库
删除远程文件但保留本地:
1
2
3git rm --cached <文件名> # 从版本库移除
git commit -m "移除文件"
git push同时更新
.gitignore
避免再次提交
3. 代码开发中途切换任务
暂存当前修改:
1
2
3git stash save -u "任务描述" # 保存未提交的修改
git stash list # 查看暂存列表
git stash pop # 恢复最近一次暂存此方法适用于需要临时处理其他任务时保留当前进度。
四、进阶技巧与最佳实践
1. 使用 SSH 替代 HTTPS
生成密钥:
1
ssh-keygen -t ed25519 -C "your_email@example.com"
配置远程仓库:将公钥(
~/.ssh/id_ed25519.pub
)添加到 GitHub/Gitee 的 SSH 设置中,提升安全性与便捷性
2. 子模块管理
添加子模块:
1
git submodule add <仓库URL> <路径>
更新子模块:
1
git submodule update --remote
适用于依赖第三方库的场景。
最还是选择SSH,前段时间github屏蔽了国内用户,只有SSH能用,所以也用得惯,不过SSH确实比HTTPS上传成功率大得多,虽然对新手来说确实很麻,但是教程也有不少,新手小白可以自行百度搜索
ssh密钥进行github身份验证,ssh公私密钥使用详解,github密钥配置与使用,git密钥使用详解,git入门教程_哔哩哔哩_bilibili
我的配置经过
我的配置充满坎坷,clion还是太难操作了,而且因为网络问题(后面才知道的),一直上传不了,只能使用clone,我就只好选择了vscode上传,因为vscode的报错更加简洁,经过百度查询,我才明白了是网络的问题,但是为什么还有分支合并的问题(我只有一个分支),我的仓库半个月前就创建了,如今才启用,配置也是好麻烦,下次还是直接新建仓库再clone下来用,这样就少了很多麻烦。