通过一个游戏编程熟悉文件操作

python游戏编程 在python官网下载最新版本的解释器,然后下载一个编辑器,(海龟编辑器不错的。注意:图片文件夹名一定要为images,必须和代码文件在同一文件夹里面。4,了解pqzrun里的函数作用。5,了解游戏窗口的设置和坐标。3,函数的定义与调用。2,鼠标控制小鸟移动。知识点: 1,什么是库?知识点: 1,掌握for循环和嵌套的使用。知识点: 1,认识全局变量global。知识点: 1,了解列表和列表的取值。知识点: 1,掌握设置背景图。 阅读详情

 《通过一个游戏编程熟悉事件处理》http://blog.youkuaiyun.com/flyuniverse_shell/archive/2009/10/23/4719939.aspx

 

已经完成了目标一,今天我们学习了文件操作,那么我们可以接着完成目标二。代码如下:

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

class GameButton extends JButton
{
    GameButton(String str)
    {
       super(str);
       super.setSize(10, 10);
       super.setBackground(Color.WHITE);
       super.setFont(new java.awt.Font("Dialog",1,60));//设置字体
    }
}

public class MyGame extends JFrame implements  ActionListener
{
   private JFrame f = new JFrame("Game-Java 实现");
   private JPanel jp = new JPanel(new GridLayout(4,3,10,10));
   private GameButton [] gb = new GameButton[9];
   private int[][] relationShips = new int[9][];
   private JButton JBSaveOperation = new JButton("保存操作记录");
   File fileSave = null; //游戏记录文件
   StringBuffer tempSaveStrB=new StringBuffer(); //暂时保存操作,最终会保存到fileSave中去
  
   MyGame()
   { 
       f.setLocation(10,100);
       f.setSize(600,400);
       f.getContentPane().add(jp);
      
       for(int i=0;i<gb.length;i++)
       {
        gb[i]=new GameButton("-");
        jp.add(gb[i]);
        gb[i].addActionListener(this);  //添加按钮事件
       }

       gb[4].setText("+");
       JBSaveOperation.addActionListener(this);
       jp.add(JBSaveOperation);
       f.setVisible(true); 

       relationShips[0] = new int[] { 0, 1, 3, 4 };
       relationShips[1] = new int[] { 0, 1, 2 };
       relationShips[2] = new int[] { 1, 2, 4, 5 };
       relationShips[3] = new int[] { 0, 3, 6 };
       relationShips[4] = new int[] { 1, 3, 4, 5, 7 };
       relationShips[5] = new int[] { 2, 5, 8 };
       relationShips[6] = new int[] { 3, 4, 6, 7 };
       relationShips[7] = new int[] { 6, 7, 8 };
       relationShips[8] = new int[] { 4, 5, 7, 8 };
      
       fileSave = new File("game.txt");
       if(!fileSave.exists())
       {
   try
   {
    fileSave.createNewFile();
   }
   catch (IOException e)
   {
    e.printStackTrace();
   }
  }
   }

   public static void main(String[] args)
   {
       MyGame g=new MyGame();  
   }

    public void actionPerformed(ActionEvent e)
    {
     if(e.getSource().equals(JBSaveOperation))//如果点击的是“保存操作”按钮
    {
     BufferedWriter writer;
     try
   {  //记录游戏结果 写进游戏记录文档
      writer = new BufferedWriter(new FileWriter("game.txt"));
      writer.write(tempSaveStrB.toString());
      writer.newLine();
      writer.close();
   } catch (IOException ex)
   {
    ex.printStackTrace();
   }
    }
       for(int i=0;i<9;i++)
       {
           if(e.getSource().equals(gb[i])) //如果点中第i个
           {
              if(gb[i].getText().equals("-"))
              {
                  JOptionPane.showMessageDialog(null,"你应该点“+”的");
                  return;
              }
              ButtonChange(i);
              tempSaveStrB.append(i+",");
              if(isWin())
              {JOptionPane.showMessageDialog(null,"你输了!");}
              if(isFail())
              {JOptionPane.showMessageDialog(null,"你赢了!");}
           }
       }
    }
 
    private boolean isFail()
    {
  int count=0;
        for(int i=0;i<gb.length;i++)
        {
           if(gb[i].getText().equals("-"))
            count++;
        }
        if(9==count)
      return true;
        else
         return false;
 }

 private boolean isWin() //遍历所有Button
 {
  int count=0;
        for(int i=0;i<gb.length;i++)
        {
           if(gb[i].getText().equals("+"))
            count++;
        }
        if(8==count && gb[4].getText().equals("-"))
      return true;
        else
         return false;
 }

 private void ButtonChange(int i)
    {
       for(int j=0;j<relationShips[i].length;j++)
       {
           if(gb[relationShips[i][j]].getText().equals("+"))
           {
              gb[relationShips[i][j]].setText("-");
           }
           else
           {
              gb[relationShips[i][j]].setText("+");
           }
       }
    }
}

Java基础编程练习:图形界面、游戏逻辑与文件操作 本文还有配套的精品资源,点击获取 简介:本压缩包包含一系列Java入门级实践项目,旨在帮助新手通过动手实践,掌握Java语言的基础知识和编程技能。项目涉及图形用户界面(GUI)编程、命令行或图形界面文字游戏、简单物理模拟游戏以及文件I/O操作和数据加密技术。通过逐步完成这些项目,初学者将了解Swing或JavaFX、字符串处理、事件监听、坐标系统、碰撞检测、文件操作和信息安... 阅读详情

相关推荐

C语言游戏编程实战:62款游戏源码解析

在游戏开发中,数据结构的应用是至关重要的。它不仅影响着游戏的性能,还决定着代码的可维护性和扩展性。接下来我们将深入探讨链表、栈、队列、树和图结构在游戏中是如何被应用的。SDL 是一个跨平台的开发库,设计用来提供对音频、键盘、鼠标、游戏手柄和图形硬件的低级访问。它被广泛应用于独立游戏的开发中,特别是那些需要快速原型开发和跨平台能力的项目。SDL 的 API 设计简洁明了,使得开发者能够快速上手并实现游戏中的基本图形和音效功能。Allegro。

weixin_36464343的博客 1148

自己写的小游戏(1000行+代码)

千行代码+的小游戏!

Zjl120919的博客 2901

Ruby编程练习:Hangman游戏设计与实现

本文还有配套的精品资源,点击获取 简介:"man子手"游戏,也称为"hangman",是一个基于命令行的猜词游戏,玩家通过提示猜测隐藏的单词。该游戏是Ruby编程语言学习者的一个常见项目,用于练习控制流、字符串操作和用户交互。在"hangman-master"项目中,玩家可以找到用Ruby代码实现的游戏。本文介绍了游戏实现的关键概念,包括类的定义、实例变量的使用、方法的实现...

weixin_33239721的博客 1005

游戏启动脚本

http://forum.ubuntu.com.cn/viewtopic.php?f=121&t=72933 使用启动脚本(使用之前确保游戏能够正常运行) 再使用单独得X server时,很多游戏一般都可以发挥出他们最佳性能。wine不需要窗口管理器(GNOME或KDE)就可以正常地运行,所以如果你在一个单独的X server下运行游戏,你会得到明显的性能提升。在运行游戏之前,关闭GDM或

NOHACKCC的专栏 1548

C++游戏编程全攻略:从基础到项目实战

C++是一种静态类型、编译式、通用的编程语言,由Bjarne Stroustrup在1979年首次推出。作为一种高效的语言,C++支持多范式编程,包括过程化、面向对象和泛型编程。它广泛应用于系统软件、游戏开发、高性能服务器和客户端应用等领域。在C++中,类是创建对象的模板或蓝图。类中包含了成员变量和成员函数,这些成员变量和函数定义了对象的状态和行为。类的定义开始于关键字class,后面跟着类名和类体(花括号内的代码块)。public:// 公有成员变量。

weixin_30299319的博客 483

C++魔塔小游戏的编程解析与实现

C++语言是游戏开发中常用的编程语言之一,因为它具备面向对象、高性能、多范式的特点。在游戏开发中,C++主要用于引擎开发、性能敏感型逻辑的编写,以及系统级编程。理解C++的基本语法、内存管理、类和对象、以及STL(标准模板库)是游戏开发者的必修课。

weixin_28681379的博客 783

第三十四期:游戏开发中常见的10种编程语言

游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作,也需要技术水平。 他们需要具有特定需求的编程语言。 游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作,也需要技术水平。 他们需要具有特定需求的编程语言。 以下是用于游戏开发的十大编程语言的列表。 1、C# C#如今在许多游戏引擎中广泛使用,并且是游...

歌谣的博客 4101

深入解析经典坦克大战游戏源码——VC++游戏编程实践

C++是一种静态类型、编译式、通用的编程语言,它支持过程化编程、面向对象编程以及泛型编程。C++是C语言的一个超集,由Bjarne Stroustrup于1980年代初期在贝尔实验室开发。C++引入了类的概念,允许程序员创建具有封装、继承和多态特性的复杂数据结构,这对于开发大型软件系统非常有用。在C++中,类是一种用户自定义的数据类型,它将数据和相关函数封装成一个单一的单元。类的定义包括成员变量和成员函数。成员变量用于存储对象的状态,而成员函数则定义了对象能够执行的操作。

weixin_42591908的博客 670

虚幻竞技场中的控制台命令

Console Commands控制台命令在UT3里可以通过“~”键打开控制台输入命令,命令列表如下:1.General Commands常规命令实际输入的时候不需要加[ ],e.g.要把FOV改为120,直接输入FOV 120。Say [内容] - 对所有人说话Teamsay [内容] - 对队友说话FOV [大小] - 改变FOV的大小Slomo [速度大小] - 动作速度大小调节

EndlessStudio 3697

Visual C++游戏编程入门与实践

游戏开发是将创意、艺术和技术融合的过程,使用Visual C++进行游戏开发能够让开发者利用C++的高性能优势,直接操作内存和系统资源,从而创建出高效、专业的游戏。Visual C++是微软推出的Visual Studio集成开发环境中的一个组件,它提供了丰富的库和工具,适合于构建复杂的游戏逻辑和渲染引擎。在C++中,类是一种用户定义的数据类型,它将数据成员(变量)和函数成员(函数)封装为一个单一的实体。类定义了一个蓝图,允许创建具有相同特性和行为的对象。

weixin_33205138的博客 476

C++编程:打造角色扮演游戏

在C++中,类是封装数据和操作这些数据的方法的一种抽象数据类型。一个类的基本结构通常包含数据成员(成员变量)和成员函数(方法)。成员变量定义了类的状态,而成员函数定义了类的行为。private:// 私有成员变量,用于存储点的坐标public:// 构造函数,用于初始化对象// 成员函数,用于获取点的坐标x_out = x;y_out = y;// 其他成员函数...类定义了创建对象的蓝图,对象是类的实例。在上面的例子中,Point类有两个私有成员变量x和y。

weixin_30978239的博客 791

通过一个游戏编程熟悉线程操作

 继《通过一个游戏编程熟悉事件处理》http://blog.youkuaiyun.com/flyuniverse_shell/archive/2009/10/23/4719939.aspx    《通过一个游戏编程熟悉文件操作》 http://blog.youkuaiyun.com/flyuniverse_shell/archive/2009/11/02/4758566.aspx  之后 我们完成第三个目标,

flyuniverse_shell的专栏 1061

C++编程实践:Funcode太空战机游戏开发实例

htmltable {th, td {th {pre {简介:本实例是一个基于C++的交互式游戏开发案例,名为”Funcode太空战机”。游戏类似于”太空大战”,玩家控制一架战机在太空中与敌机作战。通过本项目,初学者可深入学习C++的基础语法、面向对象编程、游戏循环、图形渲染、事件处理、文件操作和音效处理等关键知识点。项目包含了游戏逻辑的基础框架、类的创建与继承、主循环与事件处理机制、2D或3D图形渲染技术,以及文件和音效处理。

weixin_28988985的博客 1001

通过一个游戏编程熟悉事件处理

  编程练习        使用你熟悉的开发语言和开发方式,实现以下的编程目标(至少合理实现“编程目标一”才为合格):编程目标一:根据下面的“游戏说明”,实现该游戏程序,完成响应用户的输入、显示游戏局面、判定游戏胜负等功能。编程目标二:在“编程目标一”的基础上,顺序记录用户从游戏开始到游戏结束的所有输入,并在游戏结束时保存到游戏过程记录文件中。编程目标三:在“编程目标二

flyuniverse_shell的专栏 1728

C++游戏编程入门教程 pdf以及光盘文件

C++游戏编程入门教程电子板书籍及光盘文件

从零到一:Silvaco中跨导曲线的自动化脚本实现

本文详细介绍了如何使用Python脚本在Silvaco中实现跨导曲线(gm曲线)的自动化分析,包括数据加载、跨导计算和结果可视化。通过自动化处理Id-Vg曲线,显著提升半导体器件工程师的工作效率,特别适用于工艺优化和DOE分析。文章还提供了批量处理和关键参数提取的高级技巧,帮助工程师快速掌握Silvaco脚本开发。

nn3456的博客 568

C++实现一个烧脑的推箱子游戏:开启你的编程与游戏之旅

C++实现一个烧脑的推箱子游戏:开启你的编程与游戏之旅 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 一款基于C++和easyx图形库开发的烧脑推箱子游戏,挑战思维极限,锻炼逻辑能力。 项目介绍 在众多编程语言中,C++以其高性能和强大的功能独树一帜,而通过C++实现的游戏更是展现了其魅力。今天,我们介绍的开源项目——C++实现一个烧脑的推箱子游戏,正是这样...

gitblog_06772的博客 620

【软件分享】天若OCR文字识别V4.48(翻译功能免费)

软件简介 吾爱破解论坛大佬天若幽心开发的一款OCR文字识别工具。支持快速截图识别,以及文本翻译。 下载地址 蓝奏云盘:点击下载 百度网盘:点击下载(密码:4dm4) 坚果云盘:点击下载 天翼云盘:点击下载 微软云盘:点击下载 使用教程 1、下载后对压缩包进行解压 2、双击天若OCR文字识别.exe 3、发现桌面右下角出现软件图标 4、双击软件图标即可开始截图识别 原帖地址 https://www.52pojie.cn/thread-692917-1-1.html ...

XavierJ的博客 1万+

python拼图游戏代码_《Python游戏趣味编程》 第10章 拼图游戏

知乎视频​www.zhihu.com图书简介可以看这里:童晶:《Python游戏趣味编程》新书上架了​zhuanlan.zhihu.com本章我们将编写一个拼图游戏,鼠标先后点击两个小拼图块,交换其坐标,直到全部达到正确位置,效果如图10-1所示。首先利用列表存储所有小拼图块的位置并显示;然后实现两个小拼图块的位置交换、实现鼠标点击的判断;接着实现游戏胜利判断、增加提示信息;最后实现游戏计时与最佳...

weixin_39611037的博客 1348

Fiori Elements 的 Adapting the UI: Analytical List Page 全解析与实战

摘要:本文详细介绍了如何通过SAP Fiori elements的UI Adaptation功能对Analytical List Page(ALP)进行细粒度适配。重点讲解了页头过滤区、图表区域、表格区域等关键组件的可配置属性,包括过滤区折叠/固定、图表类型限制、表格滚动阈值等实用功能。文章强调这些适配均可通过可视化工具完成,无需修改业务代码,并提供了典型场景的实践清单。适用于SAP Fiori elements for OData V2项目,建议配合SAP Fiori tools的Adaptation E

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 436

华为HCIP的学习大纲和计划

HCIP(华为认证 ICT 高级工程师)核心围绕华为 ICT 技术体系,不同方向(如路由交换、云计算、安全等)课程目录不同,以下是最热门的。

迷逝 575

python趣味编程100例-Python游戏趣味编程

书名:Python游戏趣味编程定价:69.0ISBN:9787115538246作者:童晶版次:第1版出版时间:2020-07内容提要:本书把趣味游戏开发应用于Python编程教学,通过介绍12个由易到难的趣味游戏案例的编写过程,带领读者从零基础开始学习。本书共13章,系统讲解了Python语言基本概念、开发环境搭建、循环、列表、数据类型、条件、复合运算符、字符串拼接、布尔变量、数组、函数、列表操...

q6q6q的专栏 1万+

【数据集处理】基于ERA5 气温/湿度数据计算湿球温度并判别湿热浪

【数据集处理】基于ERA5 气温/湿度数据计算湿球温度并判别湿热浪

WW、forever的博客 488
上一篇: Java第九次课-输入输出
下一篇: 计算机图形学主要内容
flyuniverse_shell
博客等级 码龄18年 119粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值