java rpg项目代码_java rpg游戏代码(移动保存读取)

package ggg;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

import java.io.*;

public class Tank1  extends JFrame

{

//用来存储对应的图片的二维数组 (这里的icon数组,只是用来将我们设置好的数组在界面上显示出来,不用保存进文件)

MyJPanel mp=null;

public static void main(String[] args)

{

Tank1 t1=new Tank1();

// t1.BuildWorld();

}

public Tank1 ()

{

mp=new MyJPanel();

this.add(mp);

String v="";//

System.out.println();

Scanner ini=new  Scanner(System.in);

v= ini.next();

if(v.equals("x"))

{

System.out.print("载入");

mp.BuildWorld();

}

if(v.equals("d"))

{

mp.BuildWorld();

mp.duqu();

System.out.print("读取");

}

Thread t=new Thread(mp);//启动面板线程

t.start();

this.addKeyListener(mp);

this.setSize(1600,1000);

this.setLocation(1,1);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

class MyJPanel extends JPanel implements KeyListener,Runnable// Perception感知主界面

{

ImageIcon lawn = new ImageIcon("000草地.png");

ImageIcon   person = new ImageIcon("ren.png");

ImageIcon green_trees = new ImageIcon("101绿树.png");

ImageIcon [][] plane = new ImageIcon[100][100];

int [][]map=new int [100][100];

int x=8;

int y=8;

MyJPanel()

{

}

private void baocun()//游戏保存

{

// TODO 自动生成的方法存根

File f=null;

FileOutputStream fx=null;

//DataOutputStream fx=null;

try

{

f=new File("D:\\map999999999999.txt");

fx=new FileOutputStream(f);

//fx=new DataOutputStream (f);

for(int i=0;i<100;i++)

{

for(int j=0;j<100;j++)

{

if(mp.plane[i][j]==mp.person)

{

mp.map[i][j]=0;

//System.out.print(p.map[i][j]);

}

if(mp.plane[i][j]==mp.green_trees)

{

mp.map[i][j]=1;

System.out.print(mp.map[i][j]+"   ");

}

fx.write(mp.map[i][j]);

//强制流中的数据完全输出完

}

}

System.out.print("保存X Y"+this.x+" "+this.y);

fx.write(this.x);

fx.write(this.y);

fx.flush();

//关闭输出流

fx.close();

}

catch(Exception e)

{

}

}

public void duqu()游戏读取

{

FileInputStream in=null;

DataInputStream inn=null;

try

{

in=new FileInputStream("D:\\map999999999999.txt");

inn=new DataInputStream (in);

for(int i=0;i<100;i++)

{

for(int j=0;j<100;j++)

{

mp.map[i][j]=inn.read();

if(map[i][j]==0)

{

mp.plane[i][j]=this.lawn;

}

if(map[i][j]==1)

{

mp.plane[i][j]=mp.green_trees;

}

//强制流中的数据完全输出完

}

}

mp.x=inn.read();

mp.y=inn.read();

System.out.print("读取"+this.x+"   "+this.y);

//关闭输出流

inn.close();

}

catch(Exception e)

{

}

}

public void keyTyped(KeyEvent e){}//键盘监听

public void keyReleased(KeyEvent e){}

public void keyPressed(KeyEvent e)

{

if(e.getKeyCode()==KeyEvent.VK_S)

{

this.xia();

System.out.print("xxxxx"+this.x+this.y+"    ");

}

if(e.getKeyCode()==KeyEvent.VK_W)

{

this.shang();

System.out.print("xxxxx"+this.x+this.y+"    ");

}

if(e.getKeyCode()==KeyEvent.VK_A)

{

mp.zuo();

System.out.print("xxxxx"+this.x+this.y+"    ");

}

if(e.getKeyCode()==KeyEvent.VK_D)

{

mp.you();

System.out.print("xxxxx"+this.x+this.y+"    ");

}

if(e.getKeyCode()==KeyEvent.VK_B)

{

mp.baocun();

System.out.print("保存");

}

}

public void run()

{

while(true)

{

try {

Thread.sleep(100);}

catch (Exception e) {}

this.repaint();

}

}

public void zuo()

{

this.x=this.x-1;

}

public void you()

{

this.x=this.x+1;

}

public void xia()

{

this.y=this.y+1;

}

public void shang()

{

this.y=this.y-1;

}

public void paint(Graphics g)

{ super.paint(g);

for(int i=0;i<20;i++)

{

for(int j=0;j<20;j++)

{

g.drawImage(this.plane[i+this.x][j+y].getImage(), i*55, j*55, 50,50, null);

//g.drawImage(icon1.getImage(), this.x,this.y , 50,50, null);

g.drawImage(this.person.getImage(),this.x*55 ,this.y*55, 50,50, null);

}

}

}

public void BuildWorld()//生成地图的方法

{

for(int i=0;i<100;i++)

{

for(int j=0;j<100;j++)

{

plane[i][j]=lawn;

}

}

this.plane[5][5]=green_trees;

this.plane[6][6]=green_trees;

this.plane[8][8]=green_trees;

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java类加载器_java底层内功 第一章,类加载器的任性

java类是怎么加载的&#xff1f;类加载机制JVM主要包含三大核心部分&#xff1a;类加载器&#xff0c;运行时数据区和执行引擎。虚拟机将描述类的数据从class文件加载到内存&#xff0c;并对数据进行校验&#xff0c;准备&#xff0c;解析和初始化&#xff0c;最终就会形成可以…

Java学习二:Javac Java的学习(原创)

安装完了JDK&#xff0c;就可以编译、执行简答的Java程序了&#xff0c; 一、Javac ,Java 路径名和包名的关系&#xff1a; 在D盘下&#xff0c;建文件夹Test&#xff0c;在Test里创建文件Java1.java(类名要与文件名一致&#xff09; Java1.java : package Test; public c…

java的requestmapping_SpringMVC RequestMapping 详解

SpringMVC RequestMapping 详解RequestMapping这个注解在SpringMVC扮演着非常重要的角色&#xff0c;可以说是随处可见。它的知识点很简单。今天我们就一起学习SpringMVC的RequestMapping这个注解。文章主要分为两个部分&#xff1a;RequestMapping 基础用法和RequestMapping 提…

redis查询所有key命令_想在生产搞事情?那试试这些 Redis 命令

作者&#xff1a;鸭血粉丝出自&#xff1a;Java极客技术原文&#xff1a;mp.weixin.qq.com/s/WeAamgYYGQfxlsppsn9_lg哎&#xff0c;最近阿粉又双叒叕犯事了。事情是这样的&#xff0c;前一段时间阿粉公司生产交易偶发报错&#xff0c;一番排查下来最终原因是因为 Redis 命令执…

PrintArea打印,@media screen解决移动web开发的多分辨率问题,@media print设置打印的样式...

PrintArea打印&#xff0c;局部DIV打印插件&#xff0c;依赖JQuery。 github:https://github.com/RitsC/PrintArea 当打印时需要临时改变页面布局&#xff0c;可以使用 media print{ /* * CSS */ } 打印时生效&#xff0c;打印完自动失效。 需要屏幕自适应&#xff0c;或多种分…

java arraycopyof_Java中System.arraycopy()和Arrays.copyOf()的区别

System.arraycopy()这是一个由java标准库提供的方法。用它进行复制数组比用for循环要快的多。arraycopy()需要的参数有&#xff1a;源数组&#xff0c;从源数组中的什么位置开始复制的偏移量&#xff0c;目标数组&#xff0c;从目标数组中的什么位置开始复制的偏移量&#xff0…

python 异步 生产者 消费者_python 线程通信 生产者与消费者

1 """2 线程通信的生产者与消费者3 python的queue模块中提供了同步的线程安全的队列类,都具有原子性&#xff0c;实现线程间的同步4 Queue (FIFO&#xff1a; fist in fist out)5 LifoQueue (LIFO&#xff1a; last in fist out)6 PriorityQueue (优先级队列)78…

3、C#面向对象:封装、继承、多态、String、集合、文件(下)

面向对象多态 一、装箱和拆箱 装箱&#xff1a;将值类型转换为引用类型。object o 1&#xff1b;值类型给引用类型赋值 拆箱&#xff1a;将引用类型转换为值类型。int n (int)o; 强制转换为值类型 满足条件&#xff1a;两种类型是否存在继承关系。 int n Convert.ToInt32(&q…

mysql gui 分区_一文彻底搞懂MySQL分区

一.InnoDB逻辑存储结构首先要先介绍一下InnoDB逻辑存储结构和区的概念&#xff0c;它的所有数据都被逻辑地存放在表空间&#xff0c;表空间又由段&#xff0c;区&#xff0c;页组成。段段就是上图的segment区域&#xff0c;常见的段有数据段、索引段、回滚段等&#xff0c;在In…

js 获取域名_RapidDNS域名查询如何联动Goby

前言&#xff1a;http://RapidDNS.io 是一个秒级在线子域名和同IP域名的查询工具。目前拥有25亿条DNS记录&#xff0c;支持A、AAAA、CNAME、MX4种DNS记录类型。由于Goby程序对子域名收集方面不是很完善&#xff0c;这里特编写此插件作为其拓展。可以方便快速获取域名和ip地址信…

iOS 9应用开发教程之iOS 9新特性

iOS 9应用开发教程之iOS 9新特性 iOS 9开发概述 iOS 9是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统。该操作系统于2015年6月8号&#xff08;美国时间&#xff09;被发布。本章将主要讲解iOS 9的新特性、以及使用Xcode 7.0如何编写一个简单的iOS 9的应用程序等内容…

python后端框架flask_Vue+Flask轻量级前端、后端框架,如何完美同步开发

导言我们的Vue2.0应用&#xff1a;简读-微信公众号RSS&#xff0c;即将进入后端开发。VueFlask作为轻量级前端、后端框架&#xff0c;非常适合组合起来快速开发。一个是js&#xff0c;一个是Python。Bonus:可以完美实现跨域调试&#xff0c;不需要JSONP&#xff0c;也不需要服务…

mysql查询错误_一个奇怪的MySQL查询错误

t_user表的phone_number字段是varchar(255)类型的&#xff0c;表示手机号&#xff0c;在查询某个手机号时&#xff0c;sql语句如下&#xff1a;SELECT phone_number FROM t_user WHERE phone_number 13400000000查询结果&#xff1a;phone_number---------------------------…

hdu 3308 线段树

输入一串数字&#xff0c;有两个操作&#xff1a;Q a b 查询a到b区间内严格递增子串的最大长度 &#xff1b; U a b 把第a位数字替换成b 。注意输入的编号是从0开始 解法&#xff1a;线段树维护区间的严格递增子串的最大长度即可。注意细节。 #include <iostream> #inclu…

kafka创建topic命令_0748-5.14.4-Kafka的扩容和缩容

​文档编写目的在Kafka集群资源使用已超出系统配置的资源时&#xff0c;或者有大量资源闲置造成资源浪费的时候&#xff0c;需要分别通过扩容Kafka和缩容Kafka来进行调整。本篇文章Fayson主要介绍如何进行Kafka的扩容和缩容&#xff0c;以及变更后的Kafka集群如何进行负载均衡的…

java 对话框 显示图片_Java对话框上显示图片

手掌心其实有很多种方法可以解决图片显示大小的问题:使用photoshop修改. 优点是可以节省系统资源, 显示图片的时候,不用做处理,缺点是需要了解ps的基本操作使用JDialog 自定义对话框. 优点 可以实现复杂的效果, 缺点,代码量比较多使用ImageIcon, Image 类 实现图片的缩放,. 优点…

class-dump获取iOS私有api

转自&#xff1a;http://blog.csdn.net/sunyuanyang625/article/details/41440167 获取各类iOS私有api 安装工具class&#xff0d;dump 资源地址http://download.csdn.net/detail/map625/8191343 运行class&#xff0d;dump并编译src项目 编译之后在produce中找到编译好的class…

python能开发什么产品_三周学 Python ?不,三周做个产品

我的同事在看到毫无开发经验的我用三周时间&#xff0c;不但从零基础用上了 Python&#xff0c;还做出了一个客户关系管理系统&#xff0c;强烈邀请我分享经验。惶恐&#xff0c;因为我并没有出色的智商&#xff0c;也没有觉得三周学 Python 是一个体现自己牛叉的事情(不少人可…

爬楼梯 java_Leetcode 70.爬楼梯(Java)

题目&#xff1a;假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f;注意&#xff1a;给定 n 是一个正整数。示例 1&#xff1a;输入&#xff1a; 2输出&#xff1a; 2解释&#xff1a; 有两种方法可以爬…

WebView之2

首先需要添加权限&#xff1a; <uses-permission android:name"android.permission.INTERNET"/>   MainActivity: package com.wyl.webview;import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.vie…