iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >R语言如何实现2048游戏
  • 705
分享到

R语言如何实现2048游戏

2023-06-14 06:06:40 705人浏览 安东尼
摘要

小编给大家分享一下R语言如何实现2048游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!2048 是一款益智游戏,只需要用方向键让两两相同的数字碰撞就会诞生一个

小编给大家分享一下R语言如何实现2048游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

2048 是一款益智游戏,只需要用方向键让两两相同的数字碰撞就会诞生一个翻倍的数字,初始数字由 2 或者 4 构成,直到游戏界面全部被填满,游戏结束。

编程时并未查看原作者代码,不喜勿喷。

程序结构如下:

R语言如何实现2048游戏

R语言代码:

#!/usr/bin/Rscript#画背景draw_bg <- function(){  plot(0,0,xlim=c(0,0.8),ylim=c(0,0.8),type='n',xaxs="i", yaxs="i")  for (i in c(1:4)){      for (j in c(1:4)){    points(0.1+0.2*(i-1),0.9-0.2*(j),col="gray",pch=15,cex=16)}}}#画数字矩阵draw_num <- function(){for (i in c(1:4)){  for (j in c(1:4)){    if (e$m[i,j] != 0){    text(0.1+(j-1)*0.2,0.7-(i-1)*0.2,font=2,family="Arial",label=e$m[i,j],cex=2)    }}}}#初次运行游戏,生成随机矩阵init <- function(){e$stage=1mt <- matrix(c(sample(c(2,4),1),rep(0,15)),nrow=4)e$m <- mt[sample(4),sample(4)]draw_bg()draw_num()}#移除矩阵数字间的0rm_zero <- function(){if (e$x==0){if (e$dir=="up"){  for (c in 1:4) e$m[,c] <- c(e$m[,c][which(e$m[,c]!=0)],rep(0,4-length(e$m[,c][which(e$m[,c]!=0)])))}if (e$dir=="down"){  for (c in 1:4) e$m[,c] <- c(rep(0,4-length(e$m[,c][which(e$m[,c]!=0)])),e$m[,c][which(e$m[,c]!=0)])}if (e$dir=="left"){      for (r in 1:4) e$m[r,] <- c(e$m[r,][which(e$m[r,]!=0)],rep(0,4-length(e$m[r,][which(e$m[r,]!=0)])))}if (e$dir=="right"){    for (r in 1:4) e$m[r,] <- c(rep(0,4-length(e$m[r,][which(e$m[r,]!=0)])),e$m[r,][which(e$m[r,]!=0)])}}else{if (e$dir=="up"){    c <- e$x    e$m[,c] <- c(e$m[,c][which(e$m[,c]!=0)],rep(0,4-length(e$m[,c][which(e$m[,c]!=0)])))}if (e$dir=="down"){    c <- e$x    e$m[,c] <- c(rep(0,4-length(e$m[,c][which(e$m[,c]!=0)])),e$m[,c][which(e$m[,c]!=0)])}if (e$dir=="left"){    r <- e$x    e$m[r,] <- c(e$m[r,][which(e$m[r,]!=0)],rep(0,4-length(e$m[r,][which(e$m[r,]!=0)])))}if (e$dir=="right"){    r <- e$x    e$m[r,] <- c(rep(0,4-length(e$m[r,][which(e$m[r,]!=0)])),e$m[r,][which(e$m[r,]!=0)])}}}#在空白处添加随机数字new_mt <- function(){e$m[sample(which(e$m==0),1)] <- sample(c(2,4),1)}#检查是否游戏失败fail <- function(){if (length(e$m[which(e$m==0)])==0){  e$x=0  for (r in 1:3){  for (c in 1:3){    if (e$m[r,c] == e$m[r,c+1] | e$m[r,c] == e$m[r+1,c]){    e$x=1    }  }  }  if (e$x==0){  stage2()}}}#游戏中stage1 <- function(){e$stage <- 1e$x <- 0rm_zero()if (e$dir=="left"){  i=1  while (i<=4){    if (e$m[i,1] != 0 & e$m[i,1]==e$m[i,2] & e$m[i,1]==e$m[i,3] & e$m[i,1]==e$m[i,4]){      e$m[i,]=rep(c(2*e$m[i,1],0),each=2)      e$x=1    }    else if (e$m[i,2]!=0 & e$m[i,3] != 0 & e$m[i,2]==e$m[i,1] & e$m[i,3]==e$m[i,4]){      e$m[i,]=c(2*e$m[i,1],0,2*e$m[i,3],0)      e$x=1    }    else if (e$m[i,2] != 0 & e$m[i,2]==e$m[i,1]){      e$m[i,]=c(2*e$m[i,1],0,e$m[i,3],e$m[i,4])      e$x=1    }    else if (e$m[i,3] != 0 & e$m[i,3]==e$m[i,4]){      e$m[i,]=c(e$m[i,1],e$m[i,2],2*e$m[i,3],0)      e$x=1    }    else if (e$m[i,2] != 0 & e$m[i,2]==e$m[i,3]){      e$m[i,]=c(e$m[i,1],2*e$m[i,2],0,e$m[i,4])      e$x=1    }    i=i+1      }  rm_zero()  new_mt()  draw_bg()  draw_num()  fail()}if (e$dir=="right"){  i=1  while (i<=4){    if (e$m[i,1] != 0 & e$m[i,1]==e$m[i,2] & e$m[i,1]==e$m[i,3] & e$m[i,1]==e$m[i,4]){      e$m[i,]=rep(c(0,2*e$m[i,1]),each=2)      e$x=1    }    else if (e$m[i,2] != 0 & e$m[i,3] != 0 & e$m[i,2]==e$m[i,1] & e$m[i,3]==e$m[i,4]){      e$m[i,]=c(0,2*e$m[i,1],0,2*e$m[i,3])      e$x=1    }    else if (e$m[i,2] != 0 & e$m[i,2]==e$m[i,1]){      e$m[i,]=c(0,2*e$m[i,1],e$m[i,3],e$m[i,4])      e$x=1    }    else if (e$m[i,3] != 0 & e$m[i,3]==e$m[i,4]){      e$m[i,]=c(e$m[i,1],e$m[i,2],0,2*e$m[i,3])      e$x=1    }    else if (e$m[i,2] != 0 & e$m[i,2]==e$m[i,3]){      e$m[i,]=c(e$m[i,1],0,2*e$m[i,2],e$m[i,4])      e$x=1    }    i=i+1      }  rm_zero()  new_mt()  draw_bg()  draw_num()  fail()}if (e$dir=="up"){  j=1  while (j<=4){    if (e$m[1,j] != 0 & e$m[1,j]==e$m[2,j] & e$m[1,j]==e$m[3,j] & e$m[1,j]==e$m[4,j]){      e$m[,j]=rep(c(2*e$m[1,j],0),each=2)      e$x=1    }    else if (e$m[2,j] != 0 & e$m[3,j] != 0 & e$m[2,j]==e$m[1,j] & e$m[3,j]==e$m[4,j]){      e$m[,j]=c(2*e$m[1,j],0,2*e$m[3,j],0)      e$x=1    }    else if (e$m[2,j] != 0 & e$m[2,j]==e$m[1,j]){      e$m[,j]=c(2*e$m[1,j],0,e$m[3,j],e$m[4,j])      e$x=1    }    else if (e$m[3,j] != 0 & e$m[3,j]==e$m[4,j]){      e$m[,j]=c(e$m[1,j],e$m[2,j],2*e$m[3,j],0)      e$x=1    }    else if (e$m[2,j] != 0 & e$m[2,j]==e$m[3,j]){      e$m[,j]=c(e$m[1,j],2*e$m[2,j],0,e$m[4,j])      e$x=1    }    j=j+1      }  rm_zero()  new_mt()  draw_bg()  draw_num()  fail()}if (e$dir=="down"){  j=1  while (j<=4){    if (e$m[1,j] != 0 & e$m[1,j]==e$m[2,j] & e$m[1,j]==e$m[3,j] & e$m[1,j]==e$m[4,j]){      e$m[,j]=rep(c(0,2*e$m[1,j]),each=2)      e$x=1    }    else if (e$m[2,j] != 0 & e$m[3,j] != 0 & e$m[2,j]==e$m[1,j] & e$m[3,j]==e$m[4,j]){      e$m[,j]=c(0,2*e$m[1,j],0,2*e$m[3,j])      e$x=1    }    else if (e$m[2,j] != 0 & e$m[2,j]==e$m[1,j]){      e$m[,j]=c(0,2*e$m[1,j],e$m[3,j],e$m[4,j])      e$x=1    }    else if (e$m[3,j] != 0 & e$m[3,j]==e$m[4,j]){      e$m[,j]=c(e$m[1,j],e$m[2,j],0,2*e$m[3,j])      e$x=1    }    else if (e$m[2,j] != 0 & e$m[2,j]==e$m[3,j]){      e$m[,j]=c(e$m[1,j],0,2*e$m[2,j],e$m[4,j])      e$x=1    }    j=j+1      }  rm_zero()  new_mt()  draw_bg()  draw_num()  fail()}}stage2<-function(){ e$stage<-2 plot(0,0,xlim=c(0,1),ylim=c(0,1),type='n',xaxs="i", yaxs="i") text(0.5,0.7,label="Game Over",cex=2) text(0.5,0.4,label="Space to restart, q to quit.",cex=2,col=4) text(0.2,0.05,label="Author:YwLiao",cex=1)}# 开机画图stage0<-function(){  e$stage<-0  plot(0,0,xlim=c(0,1),ylim=c(0,1),type='n',xaxs="i", yaxs="i")  text(0.5,0.7,label="2048",cex=2)  text(0.5,0.4,label="Any keyboard to start",cex=2,col=4)  text(0.5,0.3,label="Up,Down,Left,Rigth to control direction",cex=2,col=2)  text(0.2,0.05,label="Author:YwLiao",cex=1)}#键盘事件keydown<-function(K){ print(paste("keydown:",K,",stage:",e$stage)); if(e$stage==0){     #开机画面   init()   return(NULL)} if(e$stage==2){ #结束画面      if(K=="q") q()      else if(K==' ') stage0()      return(NULL) } if(e$stage==1){ #游戏中    if(K == "q") {      stage2()  }else {    if(tolower(K) %in% c("up","down","left","right")){      e$dir<-tolower(K)      stage1()     }    } }   return(NULL)  }#开始运行游戏run<-function(){  e<<-new.env()  #X11(type="Xlib") #linux系统需添加此行代码,不过字体受到限制,没有windows下大  stage0()  getGraphicsEvent(prompt="2048",onKeybd=keydown)}run()

游戏画面

R语言如何实现2048游戏

以上是“R语言如何实现2048游戏”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: R语言如何实现2048游戏

本文链接: https://www.lsjlt.com/news/268299.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • R语言如何实现2048游戏
    小编给大家分享一下R语言如何实现2048游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!2048 是一款益智游戏,只需要用方向键让两两相同的数字碰撞就会诞生一个...
    99+
    2023-06-14
  • R语言写2048游戏实例讲解
    2048 是一款益智游戏,只需要用方向键让两两相同的数字碰撞就会诞生一个翻倍的数字,初始数字由 2 或者 4 构成,直到游戏界面全部被填满,游戏结束。 编程时并未查看原作者代码,不喜...
    99+
    2024-04-02
  • 用C语言实现2048游戏
    本文实例为大家分享了用C语言实现2048游戏的具体代码,供大家参考,具体内容如下 我遇到的几个问题: 问题1:如何显示? system("clear");//清屏 每次发生变化就清屏...
    99+
    2024-04-02
  • 基于C语言实现2048游戏
    本文实例为大家分享了C语言实现2048游戏的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h>...
    99+
    2024-04-02
  • 怎么用C语言实现2048游戏
    本篇内容主要讲解“怎么用C语言实现2048游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C语言实现2048游戏”吧!本文实例为大家分享了用C语言实现2048游戏的具体代码,供大家参考,...
    99+
    2023-06-20
  • 用C语言完整实现2048游戏
    目录前言一、游戏思路二、游戏框架 1.菜单界面2.游戏主体1.初始化界面:2.随机生成初始数字3.实现移动4.增加新数字5.判定胜负6.游戏函数三、游戏运行四、所有代码总结 前言 游...
    99+
    2024-04-02
  • 怎么用C语言完整实现2048游戏
    这篇文章主要介绍怎么用C语言完整实现2048游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、游戏思路程序开始时出现菜单,让玩家选择开始游戏或者退出游戏。玩家选择开始游戏后,出现棋盘,通过方向键选择移动的方向。移...
    99+
    2023-06-25
  • java如何实现2048游戏功能
    小编这次要给大家分享的是java如何实现2048游戏功能,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。功能要求:2048的基本界面,能够实现2048的游戏功能。总思路:两个类:Game和GameLis...
    99+
    2023-05-31
    java ava
  • java怎么实现2048游戏
    这篇文章主要介绍java怎么实现2048游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文实例讲述了java实现的2048游戏。分享给大家供大家参考,具体如下:先来看看运行效果:具体代码如下:package&nb...
    99+
    2023-05-30
  • Unity游戏开发之2048游戏的实现
    目录一、前言二、游戏开发知识储备2-1技术栈三、休闲类游戏《2048》开发实战3-1玩法概述3-2实现分析3-3搭建场景3-4实现代码一、前言 写今天这篇文章的缘由,其实是来自于前段...
    99+
    2024-04-02
  • 如何使用Java实现经典游戏2048
    这篇文章主要介绍如何使用Java实现经典游戏2048,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!主要设计游戏面板生成显示方块设计键盘监听,方向键控制数字移动数字移动逻辑算法处理数字累加到2048,游戏胜利功能截图游...
    99+
    2023-06-29
  • linux控制台下如何实现2048小游戏
    这篇“linux控制台下如何实现2048小游戏”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇...
    99+
    2024-04-02
  • 怎么用Python实现2048小游戏
    这篇文章主要介绍怎么用Python实现2048小游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、开发环境Python版本:3.6.4相关模块:pygame模块;以及一些Python自带的模块。二、环境搭建安装P...
    99+
    2023-06-15
  • C语言如何实现拼图游戏
    本篇内容介绍了“C语言如何实现拼图游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!制作一款拼图小游戏#include <g...
    99+
    2023-06-08
  • java实现2048小游戏(含注释)
    本文实例为大家分享了java实现2048小游戏的具体代码,供大家参考,具体内容如下 实现文件 APP.java import javax.swing.*; public cla...
    99+
    2024-04-02
  • C语言如何实现空战游戏
    本篇内容介绍了“C语言如何实现空战游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、项目描述和成果展示项目描述:   在以往的...
    99+
    2023-06-30
  • Python怎么实现简单2048小游戏
    这篇文章主要介绍了Python怎么实现简单2048小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简单的2048小游戏不多说,直接上图,这里并未实现GUI之类的,需要的话...
    99+
    2023-06-15
  • 小程序怎么实现2048小游戏
    这篇文章主要介绍“小程序怎么实现2048小游戏”,在日常操作中,相信很多人在小程序怎么实现2048小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”小程序怎么实现2048小游戏”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-26
  • 如何利用AngularJS开发2048游戏
    这期内容当中小编将会给大家带来有关如何利用AngularJS开发2048游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我频繁地被问及到的一个问题之一,就是什么时候使用...
    99+
    2024-04-02
  • C语言如何实现扑克牌游戏
    这篇文章主要介绍C语言如何实现扑克牌游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 设计目的扑克牌是我们从小玩到大的纸牌类小游戏,我们有各种玩法跟不同的规则。我之所以选择的这个扑克牌,是因为我觉得可以提高我的...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作