本帖最后由 zzz19760225 于 2024-9-18 11:00 编辑
回复 4# jyswjjgdwtdtj
谢谢你的建议,
我有机会试试,方便用的工具会加快工作效率。(方便好用会容易接受,尤其对学习有障碍的人来说。尤其是看到linux前面加.小点点的文件,以前看到.net当作是一个库,没有当作可以使用的软件,个人感觉有点反人类,不是说人家技术,是从用户角度瞎说而已,有些设置,从人操作控制机器世界通用效率考虑的角度,是完全没必要的。中国得有自己的人类软件机器世界啊)
这里的图片移动,是想做个广义自由度的连环画,可以当图片显示的,可以组合图片的,企图接近flash那种的想法。
结果遇到了gif动画,产生显示难度大山,于是就用文件夹里图片显示。搜索相关内容,看到李寻欢的C语言内容,就想到像素游戏,如大航海,以及中国自己的像素大航海游戏,或叫郑和之四海大明什么的一类。以及批处理勇士大闯关,于是试一下。这几天得了FIVE66和HOPE2021,还有f开头flashercs的2点阵代码,提供的开源搜索,其余的搜索抄写,不断拼凑组合代码。尤其是心里想着那事怎么解决,连觉都睡不好了,精神也变差。所以这方面暂时小心谨慎去尝试,至少要一个月做一个事情单元,这样不容易掉头发。
如果能做成一个通用的,以WIN和LINUX显示图片的功能,做成的显存点像素阵列,做简易通用的类DOS存取点像素游戏模式,然后做简单的像素游戏,降低制作难度,也是可以的。(需要信息储存取和显存两个阵列,加上手动和程序开关,到手动自动组合的。以及一体数量数字进制和点像素自造字符集,需要很久吧)
----------------------------------------------------------------------------------------------------------------------------------------------------------
抄写的,可以方向键移动人物图片。(问题还是five66说的那个图片绘制的内存占用,其是否清除的隐患,easyx到底能不能不断绘图。或者需要一个试验)- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <windows.h>
- #include <graphics.h>
-
- int main()
- {
- initgraph(640, 480); // 创建窗口
- IMAGE img0;
- loadimage(&img0,"菜菜城1.jpg",640,480);
-
- IMAGE img;
- loadimage(&img, "李寻欢1.png", 30, 30); // 加载图片
-
- int x = 100, y = 100; // 初始位置
-
- while(1) // 直到键盘有输入
- {
- Sleep(50);
- if(GetAsyncKeyState(VK_LEFT)) { x -= 10; } // 左移 // 如果按下左键
- if(GetAsyncKeyState(VK_RIGHT)) { x += 10; } // 右移// 如果按下右键
- if(GetAsyncKeyState(VK_UP)) { y -= 10; }// 上移// 如果按下上键
- if(GetAsyncKeyState(VK_DOWN)) { y += 10; } // 下移// 如果按下下键
- putimage(0, 0, &img0);
- putimage(x, y, &img); // 绘制图片
- }
- closegraph(); // 关闭窗口
- return 0;
- }
复制代码 后面触发剧情的地区刷怪或宝物,与连环画的文字按钮可以合为一个:屏幕画面的量化区域鼠标和键盘触发机关开关。
用文件夹图片动画化模式,速度立马变慢了。- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <windows.h>
- #include <graphics.h>
-
- int main()
- {
- initgraph(640, 480);
- IMAGE img0;
- loadimage(&img0,"菜菜城1.jpg",640,480);
-
- IMAGE img;
- //loadimage(&img, "李寻欢1.png", 20, 20);
-
- int x = 100, y = 100; // 初始位置
- char filePath[1024]; // 文件路径数组
- int n = 1;
-
- while(1)
- {
- Sleep(50);
- if(GetAsyncKeyState(VK_LEFT)) { x -= 10; } // 左移 // 如果按下左键
- if(GetAsyncKeyState(VK_RIGHT)) { x += 10; } // 右移 // 如果按下右键
- if(GetAsyncKeyState(VK_UP)) { y -= 10; } // 上移 // 如果按下上键
- if(GetAsyncKeyState(VK_DOWN)) { y += 10; } // 下移 // 如果按下下键
- putimage(0, 0, &img0);
- sprintf(filePath, "%s\\%d.png", "李寻欢", n); //本文件夹里下一层文件夹“李寻欢”
- IMAGE img;
- loadimage(&img, filePath,20,20); //图片的大小
- putimage(x, y, &img); //图片的竖横量
- Sleep(100);
- n = (n % 4) + 1; //递增图片索引, 假设文件名是1.png, 2.png, ..., 假设最多有4张图片
- }
- closegraph();
- return 0;
- }
复制代码
中外大航海的明大航海,与其后的西欧大航海两个游戏概念空间。
主要是明大航海的先期部分丰富的游戏假想(一个大洲上有凶残无比的猫象,还有一个大洲有专门吓唬人的霸王怪兽),以及游戏开局一历史闻名的宝船。
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <windows.h>
- #include <graphics.h>
-
- int main()
- {
- initgraph(640, 480);
-
- IMAGE img0;
- loadimage(&img0,"中国世界地图1.1.png",640,480);
-
-
- IMAGE img1;
- loadimage(&img1,"猫象1.png",50,50);
-
- IMAGE img2;
- loadimage(&img2,"怪兽1.jpg",50,50);
-
- IMAGE img;
- loadimage(&img, "宝船1.jpg", 20, 20);
-
- int x = 400, y = 230; // 初始位置
-
- while(1)
- {
- Sleep(50);
- if(GetAsyncKeyState(VK_LEFT)) { x -= 10; } // 左移 // 如果按下左键
- if(GetAsyncKeyState(VK_RIGHT)) { x += 10; } // 右移 // 如果按下右键
- if(GetAsyncKeyState(VK_UP)) { y -= 10; } // 上移 // 如果按下上键
- if(GetAsyncKeyState(VK_DOWN)) { y += 10; } // 下移 // 如果按下下键
-
- putimage(0, 0, &img0);
- putimage(150, 250, &img1);
- putimage(350, 150, &img2);
- putimage(x, y, &img);
- }
-
- closegraph();
- return 0;
- }
复制代码 换成明航海建立的世界海图,比卫星地图感觉上好一些。(或者叫锦衣卫勘图录。如果叫传教士绘图录,其中不应该有传统中文概念命名残留,更不应该缺少宗教人物色彩的地名称呼,不象是传教士搞的,所以个人假设选择为锦衣卫勘图录。主要时间点是宝船资料失火案)
(需要有一个地图边缘出去,循环从地图另一边出来的什么内容。指定航线的线段,键盘和鼠标点击回车,就进退这个航线,以及出航线之外的自由度航行。船怎么不开到陆地上去呢?整个地图一个图层,陆地一个图层,海洋一个图层,比较按钮区域一样,有这个信息,就停止,无法继续计算移动?)
可以从地图一边进,地图另一边出的循环连接。- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <windows.h>
- #include <graphics.h>
-
- int main()
- {
- int H0=640;
- int I0=480;
- initgraph(H0, I0);
-
-
- IMAGE img0;
- loadimage(&img0,"明万国图1.jpg",H0,I0);
-
-
- IMAGE img1;
- loadimage(&img1,"猫象1.png",50,50);
-
- IMAGE img2;
- loadimage(&img2,"怪兽1.jpg",50,50);
-
- IMAGE img;
- loadimage(&img, "宝船1.jpg", 20, 20);
-
- int H = 400, I = 230; // 初始位置
-
- while(1)
- {
- Sleep(50);
- if(H<0) {H=H0; } //四个方向的地图边界过渡,从地图一边出去,另一边进来。
- if(H>H0) {H=0 ; }
- if(I<0) {I=I0; }
- if(I>I0) {I=0 ; }
-
- if(GetAsyncKeyState(VK_LEFT)) { H -= 10; } // 左移 // 如果按下左键
- if(GetAsyncKeyState(VK_RIGHT)) { H += 10; } // 右移 // 如果按下右键
- if(GetAsyncKeyState(VK_UP)) { I -= 10; } // 上移 // 如果按下上键
- if(GetAsyncKeyState(VK_DOWN)) { I += 10; } // 下移 // 如果按下下键
-
- putimage(0, 0, &img0);
- putimage(150, 250, &img1);
- putimage(350, 150, &img2);
- putimage(H, I, &img);
- }
-
- closegraph();
- return 0;
- }
复制代码 需要参考西欧大航海游戏,进行有益补充丰富。
(地图左右可以圆接,但是南北上下,好像不能连接。地图北极往上,不是南极吧。同样,南极往下,不是北极)
如果是多个人物图片,进行剧情程序设定的移动动作,怎么自动呢?(自动显示和消失一个图片,多个图片,循环多个图片)
把小船换成大船,一个操作界面里,方向舵左几右几操作,也是可以类似潜艇游戏一类的微操效应。
简单图片式空战游戏,起飞部分,天空云层图组合海面图,机枪和导弹发射运动部分,降落部分,统计战绩信息列表和游戏记录存取。
游戏是做不完的,要是有个村社网络中心,进行有限有效区域的游戏玩乐游戏交换就好了,通过间接费用完成大部分分配,少部分直接买卖费用(直接税与间接税)。 |