如何编程游戏代码(游戏编程怎么编)
计算机如何编程打游戏?
你好,能通过编程开发出来的游戏有很多,比如java开发的贪吃蛇,我的世界等,python开发的小矮人,动物大战等,具体如何编程就需要学习软件开发专业里面的游戏开发相关知识。下面是部分学习知识点,希望能帮到你。
1.例如字符串查找、子串、模式匹配等。?当在 Lua 中对字符串做索引时,第一个字符从 1 开始计算(而不是 C 里的 0 )。 索引可以是负数,它指从字符串末尾反向解析。 即,最后一个字符在 -1 位置处,等等。
2.字符串库中的所有函数都在表 string 中。?它还将其设置为字符串元表的 __index 域。 因此,你可以以面向对象的形式使用字符串函数。 例如,string.byte(s,i) 可以写成 s:byte(i)。
字符串库假定采用单字节字符编码。
接收零或更多的整数。 返回和参数数量相同长度的字符串。 其中每个字符的内部编码值等于对应的参数值。
数字编码没有必要跨平台。
3.返回包含有以二进制方式表示的(一个 二进制代码块 )指定函数的字符串。?之后可以用 load 调用这个字符串获得 该函数的副本(但是绑定新的上值)。 如果 strip 为真值, 二进制代码块不携带该函数的调试信息 (局部变量名,行号,等等。)。
带上值的函数只保存上值的数目。 当(再次)加载时,这些上值被更新为 nil 的实例。 (你可以使用调试库按你需要的方式来序列化上值,并重载到函数中)
4.查找第一个字符串 s 中匹配到的 pattern )。?如果找到一个匹配,find 会返回 s 中关于它起始及终点位置的索引; 否则,返回 nil。 第三个可选数字参数 init 指明从哪里开始搜索; 默认值为 1 ,同时可以是负值。 第四个可选参数 plain 为 true 时, 关闭模式匹配机制。 此时函数仅做直接的 “查找子串”的操作, 而 pattern 中没有字符被看作魔法字符。 注意,如果给定了 plain ,就必须写上 init 。
如果在模式中定义了捕获,捕获到的若干值也会在两个索引之后返回。
5.返回不定数量参数的格式化版本, 格式化串为第一个参数(必须是一个字符串)。格式化字符串遵循 ISO C 函数 sprintf 的规则。 不同点在于选项 *, h, L, l, n, p 不支持, 另外还增加了一个选项 q。 q 选项将一个字符串格式化为两个双引号括起,对内部字符做恰当的转义处理的字符串。 该字符串可以安全地被 Lua 解释器读回来。
希望能帮到你,谢谢!

如何用C++编写一个小游戏
一个用C++编程的小游戏,可以实现的功能如下:
1、随机生成数字;
2、数字消除合并;
3、判定游戏结束;
一、游戏主体:
因为用C++写的,所以用了类,棋盘用了一个二维数组,m是棋盘规格,取了4。
class game
{
public:
? int i, j;
? game() {
? ? ? count1 = 0;
? ? ? for (i = 0; i m; i++)
? ? ? ? ? for (j = 0; j m; j++)
? ? ? ? ? ? ? chessboard[i][j] = 0;
? ? ? srand((unsigned)time(NULL));
? ? ? x = rand() % m;
? ? ? y = rand() % m;
? ? ? if (count1 == 1 || count1 == 0)
? ? ? ? ? chessboard[x][y] = 2;
? ? ? else
? ? ? ? ? chessboard[x][y] = 4;
? ? ? showchessboard();
? }//构造初始棋盘
? void add(int count1);//新增数字
? void showchessboard();//显示棋盘
? void up();
? void down();
? void left();
? void right();
? bool gameover();//游戏失败
private:
? int chessboard[m][m];
? int x, y, count1, count2, temp1, temp2, k;//c1-连消,c2-空位标记,t1-判连消,t2,k-临时变量
? bool flag;//判消
};
二、随机生成数字
void game::add(int count1)
{
? for (i = 0; i m; i++)
? ? ? for (j = 0; j m; j++)
? ? ? {
? ? ? ? ? if (chessboard[i][j] == 0)
? ? ? ? ? ? ? goto loop;
? ? ? }
? showchessboard();
? return;
loop:srand((unsigned)time(NULL));
? do {
? ? ? x = rand() % m;
? ? ? y = rand() % m;
? } while (chessboard[x][y] != 0);
? if (count1 2)
? ? ? chessboard[x][y] = 2;
? else
? ? ? chessboard[x][y] = 4;
? showchessboard();
}
三、数字消除合并
void game::up()
{
? temp1 = count1;
? flag = false;
? for (j = 0; j m; j++)
? ? ? for (i = 0; i m;)
? ? ? {
? ? ? ? ? for (; i 4 chessboard[i][j] == 0; i++); // 找非零值
? ? ? ? ? if (i == 4)
? ? ? ? ? ? ? break;
? ? ? ? ? else
? ? ? ? ? {
? ? ? ? ? ? ? for (k = i + 1; k 4 chessboard[k][j] == 0; k++);//找下一个非零值
? ? ? ? ? ? ? if (k == 4)
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? else if (chessboard[i][j] == chessboard[k][j])//匹配
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? chessboard[i][j] *= 2;
? ? ? ? ? ? ? ? ? chessboard[k][j] = 0;
? ? ? ? ? ? ? ? ? i = k + 1;
? ? ? ? ? ? ? ? ? flag = true;
? ? ? ? ? ? ? }
? ? ? ? ? ? ? else if (chessboard[i][j] != chessboard[k][j] k 4)//不匹配
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? i = k;
? ? ? ? ? ? ? }
? ? ? ? ? }
? ? ? }
? for (j = 0; j m; j++)//排列棋盘
? ? ? for (i = 0, count2 = 0; i m; i++)
? ? ? {
? ? ? ? ? if (chessboard[i][j] != 0)
? ? ? ? ? {
? ? ? ? ? ? ? temp2 = chessboard[i][j];
? ? ? ? ? ? ? chessboard[i][j] = 0;
? ? ? ? ? ? ? chessboard[count2][j] = temp2;
? ? ? ? ? ? ? count2++;
? ? ? ? ? }
? ? ? }
}
四、判断游戏结束
bool game::gameover()
{
? if (flag)
? ? ? count1++;//判连消
? if (temp1 == count1)
? ? ? count1 = 0;//未消除,连消归零
? add(count1);
? for (i = m - 1, j = 0; j m; j++)//最后一行
? {
? ? ? if (j == m - 1)//右下角
? ? ? {
? ? ? ? ? if (chessboard[i][j] == 0)
? ? ? ? ? ? ? return false;
? ? ? ? ? else if (chessboard[i][j] == 2048)
? ? ? ? ? {
? ? ? ? ? ? ? cout "You Win~\n";
? ? ? ? ? ? ? return true;
? ? ? ? ? }
? ? ? }
? ? ? else
? ? ? {
? ? ? ? ? if (chessboard[i][j] == 0 || chessboard[i][j] == chessboard[i][j + 1])
? ? ? ? ? ? ? return false;
? ? ? ? ? else if (chessboard[i][j] == 2048)
? ? ? ? ? {
? ? ? ? ? ? ? cout "You Win~\n";
? ? ? ? ? ? ? return true;
? ? ? ? ? }
? ? ? }
? }
? for (i = 0, j = m - 1; i m; i++)//最后一列
? {
? ? ? if (i == m - 1)//右下角
? ? ? {
? ? ? ? ? if (chessboard[i][j] == 0)
? ? ? ? ? ? ? return false;
? ? ? ? ? else if (chessboard[i][j] == 2048)
? ? ? ? ? {
? ? ? ? ? ? ? cout "You Win~\n";
? ? ? ? ? ? ? return true;
? ? ? ? ? }
? ? ? }
? ? ? else
? ? ? {
? ? ? ? ? if (chessboard[i][j] == 0 || chessboard[i][j] == chessboard[i + 1][j])
? ? ? ? ? ? ? return false;
? ? ? ? ? else if (chessboard[i][j] == 2048)
? ? ? ? ? {
? ? ? ? ? ? ? cout "You Win~\n";
? ? ? ? ? ? ? return true;
? ? ? ? ? }
? ? ? }
? }
? for (i = 0; i m - 1; i++)
? ? ? for (j = 0; j m - 1; j++)
? ? ? {
? ? ? ? ? if (chessboard[i][j] == 2048)
? ? ? ? ? {
? ? ? ? ? ? ? cout "You Win!\n";
? ? ? ? ? ? ? return true;
? ? ? ? ? }
? ? ? ? ? else if (chessboard[i][j] == chessboard[i][j + 1] || chessboard[i][j] == chessboard[i + 1][j] || chessboard[i][j] == 0)
? ? ? ? ? ? ? return false;
? ? ? }
? cout "Game over.\n";
? return true;
}
扩展资料:
C++语言的程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。
生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可搞定这个过程。但是该过程实际上分成两个步骤。
第一步是对程序进行编译,这需要用到编译器(compiler)。编译器将C++语句转换成机器码(也称为目标码);
第二步就是对程序进行链接,这需要用到链接器(linker)。链接器将编译获得机器码与C++库中的代码进行合并。C++库包含了执行某些常见任务的函数(“函数”是子程序的另一种称呼)。
参考资料来源:
百度百科-C++
如何编程一款游戏
找一些游戏编程的教程,先学通读,然后精读。然后,按照教程中介绍的编程工具,先掌握这些编程工具,然后购买或者下载编程工具进行编程。
学习游戏编程,可以从编程语言的选择与学习,然后学习图形程序接口,在视频或书籍的教程案例中慢慢成长。
1:首先要知道游戏编程用的什么语言。
2:c++语言是目前最为稳定的、指针最为全面的语言。游戏尤其网游的稳定性要求极高,因此必须用c++。如果想只是做windows方面的游戏学习,可以学习下DirectX,这个很方便在windows下做游戏开发。
3:先学c语言,c语言是全部计算机语言的基础更是c++的基础。因此要学好。再学c++,这个要学精,不然开发游戏没戏。然后学数据结构、数据库、线性代数、离散数学结构。