C++是如何从代码到游戏的

news2024/12/24 2:36:53

有一个Student类。C++怎么创建一个学生类的对象?

// 嗯我会!有两种方式:
Student s;
Student *s2 = new Student("张三");

现在这学生的行为有:吃饭,睡觉,上网课。现在你执行个上网课的行为,怎么做?

// 简单啊
s2->upNetworkClass();

通过对象调用成员函数不就成了么。

嗯,上面的代码在学校里都写过吧?有这个基础就够了。

那游戏是啥?无非是一堆图形堆叠呗,把上面的Student类换成窗体类,换成控件类,换成游戏中不同的元素类,然后再组合起来不就完了么。

呐现在,我告诉你,有一个窗体类,叫QWidget,它有一个行为叫show,可以显示窗体。你给我生成一个窗体并显示出来。那就照葫芦画瓢呗:

QWidget *w = new QWidget();
w->show();

来我们看看效果:

呀,有点意思哈?但是这距离游戏还差远呢啊。你这窗体也太丑了不是。

没事,窗体丑不要紧,我们给她美化一下!

TDWidget * w = new TDWidget(":/img/welcome.png");
w->show();

QWidget换成了TDWidget,构造函数里传了一张图片,没超纲吧。再看看效果:

诶?事情好像开始变得有趣了起来?

但还是不够,我这是游戏,要交互的!你这一张死图能干啥。

交互嘛!加个按钮不完了?我给你一个按钮类,这个类有一个move()行为,可以把自己移动到画面的任何地方。你知道你想要的按钮怎么来了吗?

QPushButton * btn = new QPushButton("按钮",w); //第二个参数代表它属于哪个窗体,如果不写,它就会生成在屏幕上而不是窗体里
btn->move(330,450);

瞅瞅:

em.......你这按钮,有是有,画风有点突兀了吧。

没事,再美化一下嘛:

TDPushButton *btn = new TDPushButton(
   ":/img/begin_normal.png", // 常规图片
   ":/img/begin_hover.png", // 鼠标悬停的图片
   ":/img/begin_press.png", // 鼠标按下的图片
   w);    // 父控件
btn->move(330,450);

效果:

呀 可以啊。快快快,然后呢,点开始游戏,进入游戏界面!这个咋做?

嗯.....其实界面切换你自己已经会了。

你这个界面不就是一个窗体,想切换界面的话.....你把这个窗体关了,再换张图片开一个新的不就完了。

新的窗体用一张传新的图片做背景,我再顺手给加上四个按钮,代码不贴了,就是上面的代码复制粘贴改改坐标,改改图片:

接下来就是游戏的主体部分了,也巨简单,有图就行:

TDMenuButton *btn1 = new TDMenuButton(":/img/1_normal.png",":/img/1_hover.png",":/img/1_selected.png",this);
btn1->move(100,100);
TDMenuButton *btn2 = new TDMenuButton(":/img/1_normal.png",":/img/1_hover.png",":/img/1_selected.png",this);
btn2->move(165,100);
TDMenuButton *btn3 = new TDMenuButton(":/img/1_normal.png",":/img/1_hover.png",":/img/1_selected.png",this);
btn3->move(100,165);

三个按钮,和上面的TDPushButton没区别,就是换成了TDMenuButton对不对,没超纲吧。

只要你的图片够美,就能生成这样:

一个按钮会写,三个按钮也会写,既然学了点C++都想做游戏了,循环总会写吧:

 for(int i = 0; i < 11 ; i++)
 {
  for(int j = 0; j < 6; j++)
  {
   TDMenuButton * btn = new TDMenuButton(":/img/1_normal.png",":/img/1_hover.png",":/img/1_selected.png",this);
   btn->move(100+i*65,100+j*65);
  }
 }

效果:(密恐福利)

这.....怎么还有点一言难尽呢......

循环会写,随机数会写吗?随机个头像行吗?

嗯......这下终于像点样了。

最后再加亿点点核心逻辑:点击两个相同的图片,判断它能不能连通,如果能连通,就把这两个按钮直接delete掉,效果就是酱紫:

就是这样咯,从你学过的C++基础语法,结合现有的框架控件,就可以撸这样一个简单的连连看。

当然了,为了点燃你题目里想要的学习热情,我故意避开一些以你现有知识可能听不懂的部分,还有一些逻辑比较绕的部分。比如:

避开了注册按钮的回调,

避开了随机生成图片的时候要保证成对出现的算法,

避开了把这些按钮和数据做关联,

避开了如何通过数据计算两点能否连通,

等等

但这都不重要,不妨碍你简单体验一下C++是如何从代码到游戏的这个过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/570401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python取数简介

Python取数简介 Python是一款强大的编程语言&#xff0c;可以轻松地处理各种数据类型并进行数据分析。Python的强大功能也使其成为数据科学和机器学习等领域非常受欢迎的编程语言。在这篇文章中&#xff0c;我们将探讨在Python中如何取数。 Python中的取数 Python中有多种方…

C#,码海拾贝(24)——线性方程组求解的复系数方程组的全选主元高斯-约当消去法之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> …

delphi11.3的WebBrower支持Edge

看到此消息后&#xff0c;立即下载了DelphiCE&#xff08;社区版&#xff09; 安装&#xff0c;创建项目&#xff0c;放TWebBrowers&#xff0c;TButton 配置参数为EdgeOnly F9运行&#xff0c;没反应 配置参数为EdgeIfAvailable F9运行&#xff0c;提示浏览器版本过低 全网搜索…

chatgpt赋能python:Python取两者之间的最大值

Python取两者之间的最大值 介绍 Python是一种高级编程语言&#xff0c;广泛应用于计算机科学、人工智能、数据科学、机器学习等不同领域。它的易用性和灵活性使它成为许多开发人员首选的工具。本篇文章将介绍如何使用Python来取两者之间的最大值。 如何取两者之间的最大值 …

URP自定义屏幕后处理

回到目录 大家好&#xff0c;我是阿赵。这次来说一下URP渲染管线里面怎样使用后处理效果&#xff0c;还有怎样去自定义后处理效果。 一、使用URP自带的后处理效果 要使用URP自带的后处理效果&#xff0c;方法很简单&#xff0c;和Unity内置渲染管线的PostProcessing后处理很…

如何在Linux中更改SSH端口?

SSH&#xff08;Secure Shell&#xff09;是一种安全的远程登录协议&#xff0c;它允许您通过网络远程连接到Linux系统并进行管理操作。默认情况下&#xff0c;SSH使用22端口进行通信。然而&#xff0c;为了增强系统的安全性&#xff0c;有时候我们需要更改SSH端口&#xff0c;…

chatgpt赋能python:Python分解——探究Python语言的精髓

Python分解——探究Python语言的精髓 Python作为一种动态解释性语言&#xff0c;逐渐成为数据科学和人工智能领域的“标配”。Python语言的优势不仅在于其简洁而直观的语法&#xff0c;更在于其开源庞大的生态系统。而Python分解&#xff0c;则是将Python语言的优势、拆分并深…

chatgpt赋能python:Python内连接的重要性

Python内连接的重要性 在数据分析和机器学习领域&#xff0c;内连接是一种非常重要的概念&#xff0c;用于筛选和分析不同数据集之间的共同项。Python语言的强大功能和广泛的库可以帮助我们轻松地实现内连接。在本文中&#xff0c;我们将介绍Python内连接的基础知识、实现方式…

chatgpt赋能python:Python分组:组织你的代码,提升可读性和可维护性

Python 分组: 组织你的代码&#xff0c;提升可读性和可维护性 在编写代码时&#xff0c;组织良好的代码结构和架构是非常重要的。对于大规模的项目&#xff0c;特别是多人合作开发的项目来说&#xff0c;代码管理和组织是至关重要的。Python 分组是一种常用的技术&#xff0c;…

css高级技巧

1. 精灵图 index.png 分析图 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title…

chatgpt赋能python:Python单行if语句

Python 单行 if 语句 在 Python 编程中&#xff0c;条件语句 if 是一个非常重要的控制流语句&#xff0c;它的主要作用是根据条件的真假来决定程序的走向。在编写 Python 代码时&#xff0c;经常会遇到需要在某些情况下只执行一行代码的情况。这时&#xff0c;就可以使用 Pyth…

chatgpt赋能python:Python取出列表数字

Python 取出列表数字 如果你是一名 Python 开发者&#xff0c;并且你需要从一个列表中取出数字&#xff0c;那么你来到了对的地方。 介绍 Python 是一门很流行的编程语言&#xff0c;它有很多内置函数和库&#xff0c;可以帮助你快速地完成各种任务。在 Python 中&#xff0…

使用yolov5实现图片分类

文章目录 开始之前下载依赖数据集下载新建配置文件执行训练模型选择训练完成测试模型进行预测自定义模型下载数据集下载地址分享问题 开始之前 你应当先克隆这个仓库 git clone https://github.com/ultralytics/yolov5 # clone下载完毕后&#xff0c;进入克隆的仓库目录 cd …

Linux系统静态IP配置(CentOS)

刚刚装好的Linux系统&#xff08;Ubuntu版本&#xff09;通过ifconfig&#xff08;如果是CentOS版本需要使用ipaddr&#xff09;之后没有发现IP地址 首先在Linux终端通过su root指令进入root用户下获得管理员权限&#xff0c;之后进入cd /etc/sysconfig/network-scripts目录中 …

Linux命令(23)之cat

Linux命令之cat 1.cat介绍 linux命令cat用于把文件内容显示在标准输出设备&#xff08;即&#xff1a;显示器&#xff09;上&#xff0c;也可以(单个/几个)文件内容追加别的文件当中去。 2.cat用法 cat [参数] [文件名称] cat命令常用参数 参数说明-b对所有非空输出进行编号…

大数据 | 实验四:并行化数据挖掘算法设计

文章目录 &#x1f4da;实验目的&#x1f4da;实验平台&#x1f4da;实验内容&#x1f4da;实验步骤&#x1f407;KNN介绍&#x1f407;并行化&#x1f955;在本地编写程序和调试&#x1f955;在集群上提交作业并执行 &#x1f407;非并行化 &#x1f4da;实验目的 机器学习和…

chatgpt赋能python:Python切换输入法:实现更高效的编程

Python 切换输入法&#xff1a;实现更高效的编程 对于有多国语言需求的程序员来说&#xff0c;切换输入法是日常编程的基本操作之一。Python是一门广泛使用的编程语言&#xff0c;对于那些使用中文输入法的开发者来说&#xff0c;如何高效地切换输入法是一个需要考虑的问题。 …

chatgpt赋能python:Python去噪——提高图像质量的神器

Python去噪——提高图像质量的神器 介绍 随着科技的发展&#xff0c;我们的生活被数字化&#xff0c;许多信息都被存储在数字化设备中。这些设备会允许我们拍摄照片、视频和录音等多媒体文件。然而&#xff0c;在实际应用中&#xff0c;多媒体数据通常存在一些问题&#xff0…

chatgpt赋能python:Python加噪声:让你的数据更真实,更可靠

Python加噪声&#xff1a;让你的数据更真实&#xff0c;更可靠 Python作为一种开源高级编程语言&#xff0c;使得加噪声变得非常简单。加噪声是为了让数据更真实、更可靠&#xff0c;防止数据中的过拟合现象。那么本文将介绍Python添加噪声的基本概念和它的具体实现方法。 什…

chatgpt赋能python:Python中取某一列的方法

Python中取某一列的方法 Python是一种易于学习但功能强大的编程语言。它在数据分析、机器学习和Web开发中广泛应用。在这个代码示例中&#xff0c;我们将介绍如何使用Python从数据集中选择某一列。 获取数据集 为了演示如何从数据集中选择某一列&#xff0c;我们将首先使用p…