最近打算用plang编程语言编写一些小游戏demo,顺便测测语言工具的健壮性。贪吃蛇是小时候喜欢玩的,就决定是它了。

先设计Snake类:

package snake;import gui::GUI;
import std::collection::ArrayList;public class Snake : GameObject
{public Snake(){super();i->int = 0;while(i < s.length){s[i][0] = i;s[i][1] = 0;++i;}}// 绘制public update(){i->int = 0;while(i<s.length){gui.draw(s[i][0], s[i][1], '6');++i;}}// 更新位置public update(x->int, y->int)->boolean{i->int=0;while(i+2<s.length){if(x == s[i][0] && y == s[i][1]){return false;}++i;}if(x == s[s.length-2][0] && y == s[s.length-2][1]){return true;}i=0;while(i+1<s.length){s[i][0] = s[i+1][0];s[i][1] = s[i+1][1];++i;}s[s.length-1][0] = x;s[s.length-1][1] = y;return true;}public getX()->int{return s[s.length-1][0];}public getY()->int{return s[s.length-1][1];}s->int[][] = new int[10][2];
}

食物类:

package snake;public class Food : GameObject
{public Food(){super();}// 绘制public update(){gui.draw(x, y, '@');}// 更新位置public update(x->int, y->int)->boolean{if(x==this.x && y==this.y){return true;}this.x = x;this.y = y;return true;}public getX()->int {return x;}public getY()->int {return y;}protected x->int = 0;protected y->int = 0;}

再写一个场景类测试一下,这条代码蛇是否能动!

import std::IO;
import std::Type;
import std::OS;
import std::TIME;
import std::IOEXT;import snake::Snake;
import snake::Food;class Main
{public static main(){OS.system("cls");OS.srand(TIME.time());snake->Snake = new Snake();food->Food = new Food();L->int = 0;R->int = 50;T->int = 0;B->int = 20;food.update((L+R)/2, (T+B)/2);times->int = 0;offX->int = 0;offY->int = 0;while(true){OS.system("cls");a->int = IOEXT.key('A');d->int = IOEXT.key('D');w->int = IOEXT.key('W');s->int = IOEXT.key('S');if(a != 0 && d != 0){offX = 0;}else if(a != 0){offX = -1;}else if(d != 0){offX = 1;}else{offX = 0;}if(w != 0 && s != 0){offY = 0;}else if(w != 0){offY = -1;}else if(s != 0){offY = 1;}else{offY = 0;}if(offX != 0 || offY != 0){x->int = snake.getX() + offX;y->int = snake.getY() + offY;if(L <= x && x<= R && T <= y && y <= B){if(snake.update(x, y) == false){break;}if(snake.getX() == food.getX() && snake.getY() == food.getY()){food.update(OS.rand() % (L+R), OS.rand() % (T+B));}}}food.update();snake.update();co_yield null;}IO.printf("game over!");}
}

整个demo是在命令行环境下运行的,实在过于简陋,但本着测试的初衷,勉强给个及格。

运行截图:【命令行高频更新,出现闪烁现象】

源代码仓库:https://github.com/chivenzhang/plang-demo

自研产品介绍:Plang高级编程语言

【plang 1.4.4】编写贪吃蛇脚本相关推荐

  1. 利用HTML5 canvas元素+原生JS编写贪吃蛇

    我们先来看一个最简单的例子 利用canvas动画编写贪吃蛇:https://clacier.github.io/tcs/ 一.什么是canvas? canvas是HTML5中新增加的一个元素,专门用于 ...

  2. python 贪吃蛇小游戏代码_10分钟再用Python编写贪吃蛇小游戏

    Python编写贪吃蛇 前不久我们公众号发布了一篇C++编写贪吃蛇小游戏的推文,反响空前.看来大家对这类简单易上手小游戏还是很喜爱的. 恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉, ...

  3. 怎么用python编贪吃蛇_少儿编程分享:手把手教你用PYTHON编写贪吃蛇(二)

    原标题:少儿编程分享:手把手教你用PYTHON编写贪吃蛇(二) 检测和判断 无论我们制作的简单或者复杂的游戏 这都是最关键的两个部分 事件处理循环 61. while True: # 游戏主循环 62 ...

  4. 10分钟用python编写贪吃蛇小游戏_牛得一批!10分钟用Python编写一个贪吃蛇小游戏...

    贪吃蛇,大家应该都玩过.当初第一次接触贪吃蛇的时候 ,还是能砸核桃的诺基亚上,当时玩的不亦乐乎.今天,我们用Python编程一个贪吃蛇游戏,下面我们先看看效果: 好了,先介绍一个思路 所有的游戏最主要 ...

  5. python编写贪吃蛇游戏

    关于编写游戏,是博主非常向往的东西(博主喜爱游戏),编写游戏得一步一步的走!今天我简单的编写一下非常经典的游戏贪吃蛇!!!! 效果图: 首先引入pygame模块 pip install pygame ...

  6. Linux下编写贪吃蛇游戏

    Linux下编写贪吃蛇游戏 文章目录 Linux下编写贪吃蛇游戏 前言 一.贪吃蛇代码 二.运行贪吃蛇代码 前言 本程序需要ncurses库,ubuntu下安装ncurses可以执行下面命令: sud ...

  7. c语言mfc写贪吃蛇,手把手教你用MFC编写贪吃蛇.doc

    手把手教你用MFC编写贪吃蛇 贪吃蛇是一款经典的小游戏,它玩法非常简单,对于MFC的初学者来说,也是一个非常好的练手项目.这篇文章,将从项目创建开始来一步一步教你如何制作一个贪吃蛇小游戏.我用的是vi ...

  8. C语言与C++基础编写贪吃蛇项目1

    C语言与C++基础编写贪吃蛇项目1 第一阶段: 简单的移动的贪吃蛇编写. 小白编写,勿喷. 一.总体项目功能: 1.添加背景音乐或者动作音效 2.有欢迎界面,游戏选项等界面 3.地图范围内有障碍物,可 ...

  9. Python使用pygame编写贪吃蛇小游戏

    Python使用pygame编写贪吃蛇小游戏 代码如下: # -*- coding:utf-8 -*- """ 贪吃蛇 """ import ...

最新文章

  1. 机器学习笔记(5) KNN算法
  2. 第四范式亮相中关村论坛 共话科技创新与技术发展
  3. php根据位置获取经纬度(百度地图)
  4. 【网络配置】双网卡访问
  5. 最小栈的实现(设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。)
  6. CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)
  7. markdown编辑器基础语法总结
  8. markdown、LaTeX输入自定义算符Res
  9. Perl中删除或替换字符串中特殊字符(如空格)的方法
  10. SecureCRT的下载、安装
  11. 《思维训练500题》
  12. Java简单小项目---网上订餐系统
  13. 人脸匹配对齐算法pytorch_PyTorch 实现孪生网络识别面部相似度
  14. Java流处理之高效读写的缓冲流
  15. JavaScript中的mouseover与mouseenter,mouseout和mouseleave的区别
  16. 【已恢复】苹果再堵开发者账号注册漏洞,黑市账号价格有价无市!
  17. php字符串去空格函数,php去掉字符串中的空格
  18. Modbus RTU转MQTT网关的登录配置
  19. maven的setting文件-02
  20. Unity VR手柄发射射线

热门文章

  1. 10大主流压力测试工具推荐
  2. 微信小程序趋势及前景,详细的Android学习指南
  3. 力扣 149. 直线上最多的点数
  4. 删除域中的Exchange服务器
  5. Linux5.9下DHCP服务器的配搭建
  6. ProcessOn -在线绘图
  7. 计算机科学期刊是b类吗,《计算机科学》体例格式
  8. OSI和TCP/IP网络参考模型傻傻分不清?图解和各层作用详细说明
  9. 《挑战程序设计竞赛》 读后感(转载)
  10. 如何将华氏转换为摄氏