`
arust
  • 浏览: 95181 次
  • 性别: Icon_minigender_1
  • 来自: 海底
社区版块
存档分类
最新评论

与众不同的扫雷之三

    博客分类:
  • lang
阅读更多

革命尚未成功!同志仍需努力!

有了各个海域的精确位置以及分布情况,就可以根据经纬度在大海上定位了


function make_ocean_chart(origin_map, current_map, width, position)
    local ocean = classfy_sea_area(origin_map, current_map, width)
    local ocean_index = 0
    for i1, v1 in ipairs(ocean) do
        for i2, v2 in ipairs(v1) do
            if (position >= v2[1]) and (position <= v2[2]) then
                ocean_index = i1
                break
            end
        end
    end
    if ocean_index ~= 0 then
        local t = current_map
        for i, v in ipairs(ocean[ocean_index]) do
            t = make_coastline(origin_map, t, width, v)
        end
        return t, compare_map(current_map, t)
    end
    return current_map, ""
end



描绘大海的同时还要记得把海岸线也画出来。


function make_coastline(origin_map, current_map, width, sea_area)
    local sea_area_west = sea_area[1]
    local sea_area_east = sea_area[2]
    if sea_area[1] % width ~= 1 then
        sea_area_west = sea_area_west - 1
    end
    if sea_area[2] % width ~= 0 then
        sea_area_east = sea_area_east + 1
    end

    if sea_area_west - width >= 1 then
        current_map = string.sub(current_map, 1, sea_area_west - width - 1) ..
            string.sub(origin_map, sea_area_west - width, sea_area_east - width) ..
            string.sub(current_map, sea_area_east - width + 1, -1)
    end
    current_map = string.sub(current_map, 1, sea_area_west - 1) ..
        string.sub(origin_map, sea_area_west, sea_area_east) ..
        string.sub(current_map, sea_area_east + 1, -1)
    if sea_area_east + width <= #current_map then
        current_map = string.sub(current_map, 1, sea_area_west + width -1) ..
            string.sub(origin_map, sea_area_west + width, sea_area_east + width) ..
            string.sub(current_map, sea_area_east + width + 1, -1)
    end
    return current_map
end



至此,扫雷游戏的算法全部描述完毕
分享到:
评论

相关推荐

    java小游戏 扫雷 java小游戏 扫雷

    java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java小游戏 扫雷java...

    扫雷 扫雷 扫雷 扫雷 扫雷

    扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷扫雷

    java扫雷代码详解

    Java扫雷程序的设计主要分为三个步骤:第一步,extends JFrame,继承JFrame类,创建一个新的扫雷程序窗口;第二步,定义需要的组件,包括按钮、标签、面板、菜单栏等;第三步,在构造函数中构造组件,并添加到扫雷...

    C++扫雷 C++扫雷

    C++扫雷 C++扫雷 C++扫雷程序

    扫雷小游戏2

    扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1扫雷小游戏1...

    扫雷扫雷程序的

    扫雷程序的外挂和扫雷程序

    经典版本的扫雷图片素材

    5. **图形界面**:虽然C语言本身并不支持图形界面,但可以通过第三方库如SDL(Simple DirectMedia Layer)或 Allegro 来实现。这些库可以帮助我们在终端或窗口中绘制扫雷的游戏画面,包括雷区、数字、标记等图片素材...

    AS3扫雷游戏

    AS3扫雷游戏是一款基于ActionScript 3.0(AS3)编程语言开发的经典小游戏,旨在帮助初学者理解和掌握AS3的基本语法、事件处理、显示对象以及游戏逻辑。以下是关于AS3扫雷游戏的一些关键知识点: 1. **ActionScript ...

    扫雷源程序 扫雷源程序 扫雷源程序

    扫雷源程序扫雷源程序扫雷源程序扫雷源程序扫雷源程序扫雷源程序

    saolei.rar_CMD版扫雷_cmd打开扫雷_cmd扫雷_cmd游戏_扫雷

    首先,CMD版扫雷新奇之处在于它不依赖于图形化界面,而是利用命令行界面来呈现游戏。在传统的Windows扫雷中,玩家通过鼠标点击来揭开雷区的方块,而在CMD版扫雷中,你需要输入特定的命令来执行这些操作。例如,你...

    java实现扫雷游戏.zip

    java实现扫雷游戏java实现扫雷游戏java实现扫雷游戏 java实现扫雷游戏java实现扫雷游戏java实现扫雷游戏 java实现扫雷游戏java实现扫雷游戏java实现扫雷游戏 java实现扫雷游戏java实现扫雷游戏java实现扫雷游戏 java...

    扫雷源程序及exe

    8. **版本控制**:开源项目通常会使用Git等版本控制系统来管理代码,通过查看提交历史,可以了解项目的开发过程和改进之处。 9. **代码优化**:对于性能要求较高的游戏,如扫雷这种实时响应的程序,代码优化是必要...

    扫雷游戏.exe

    扫雷游戏.exe

    java扫雷(javaSE实现扫雷)

    3. **随机数生成**:在初始化棋盘时,需要随机地在特定数量的格子上放置雷。Java的`Random`类可以帮助我们生成这些随机数,以确定雷的位置。 4. **状态管理**:每个格子都有不同的状态,如未打开、已打开、已标记等...

    扫雷.zip_扫雷;matlab

    matlab版扫雷,主程序为saolei.m ,操作方法与Windows自带扫雷类似。

    扫雷小游戏 完整源码 MFC C++

    3. **图形用户界面(GUI)设计**:扫雷游戏界面包括雷区网格、计时器、提示按钮等元素。MFC通过对话框模板和控件布局来创建这些元素,并且可以使用资源编辑器进行可视化设计。 4. **事件驱动编程**:MFC使用消息...

    扫雷游戏MATLAB代码

    扫雷游戏MATLAB代码

    扫雷程序可执行文件

    由于win10去掉了原先自带的扫雷程序,因而这里从网上找了一个扫雷程序过来,作为目标进行分析

    扫雷的java程序.rar_JAVA 扫雷_java 游戏_扫雷_游戏编程

    3. **事件处理**:理解事件监听器和事件处理机制,如MouseListener和ActionListener,实现用户点击格子时触发相应的行为。 4. **二维数组**:用于表示游戏地图,每个元素代表一个雷区单元格,存储雷的位置和周围雷的...

Global site tag (gtag.js) - Google Analytics