`
robinsoncrusoe
  • 浏览: 750893 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

一个五子棋程序

    博客分类:
  • JAVA
阅读更多
/*
*  filename: Game.java
*
*  author: jellen
*
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.*;

class PaintPanel extends JPanel {
  ArrayList Items = new ArrayList();

  public PaintPanel() {
    setLayout(new BorderLayout());
    ButtonPanel buttonPanel = new ButtonPanel();
    add(buttonPanel, BorderLayout.SOUTH);
    addMouseListener(new MouseHandler());
  }

  public void paintComponent(Graphics g) {
    int startX = 50;
    int startY = 50;
    boolean isMy = false;
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D)g;

    for(int i=0; i<16; i++) {
      g2.draw(new Line2D.Double(startX, startY+20*i, startX+300, startY+20*i));
      g2.draw(new Line2D.Double(startX+20*i, startY, startX+20*i, startY+300));
    }
    for(int i=0; i<Items.size(); i++) {
      isMy = !isMy;
      if(isMy)
        g2.setColor(Color.BLACK);
      else
        g2.setColor(Color.WHITE);
      g2.fill((Ellipse2D)Items.get(i));
    }
  }
  void myRepaint() {
    repaint();
  }
  private class MouseHandler extends MouseAdapter {
    public void mousePressed(MouseEvent event) {
      int x = event.getX();
      int y = event.getY();
      paintItem(x, y);
      repaint();
    }
    void paintItem(int x, int y) {
      if(x > 50 && x < 350 && y >50 && y < 350) {
        int X = x / 20;
        int Y = y / 20;
        int centerX = X*20 + 10;
        int centerY = Y*20 + 10;
        Ellipse2D ellipse = new Ellipse2D.Double();
        ellipse.setFrameFromCenter(centerX, centerY, centerX+8, centerY+8);
        Items.add(ellipse);
      }
    }
  }
  private class ButtonPanel extends JPanel {
    public ButtonPanel() {
      JButton reset = new JButton("Reset");
      add(reset);
      JButton quit = new JButton("Quit");
      add(quit);

      ResetEvent listenerR = new ResetEvent();
      reset.addMouseListener(listenerR);
      QuitEvent listenerQ = new QuitEvent();
      quit.addMouseListener(listenerQ);
    }

    private class QuitEvent
        extends MouseAdapter {
      public void mouseClicked(MouseEvent event) {
        System.exit(1);
      }
    }

    private class ResetEvent
        extends MouseAdapter {
      public void mouseClicked(MouseEvent event) {
        Items.clear();
        myRepaint();
      }
    }
  }
}

class GameFrame extends JFrame {
  public GameFrame() {
    setTitle("A Little Game");
    setSize(400, 500);
    setResizable(false);

    PaintPanel panel = new PaintPanel();
    getContentPane().add(panel);
  }
} public class Game {
  public static void main(String[] args) {
    GameFrame frame = new GameFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.show();
  }
}
分享到:
评论

相关推荐

    设计一个五子棋程序

    在IT领域,设计一款五子棋程序是一项基础但有趣的任务,它涉及到计算机编程、算法设计以及人机交互等多个方面。下面我们将深入探讨如何实现这样一个程序。 首先,我们要明确五子棋的基本规则。五子棋是一种双人对弈...

    用C++编写的五子棋程序

    在编程领域,实现一个五子棋程序可以锻炼算法设计、图形用户界面(GUI)开发以及人工智能(AI)策略设计等多方面技能。本项目是一个用C++语言编写的五子棋程序,涵盖了人机对战和人人对战模式,让我们一起深入探讨其...

    我做的一个五子棋程序

    总的来说,利用MFC和VC++6.0开发五子棋程序是一个综合性的项目,涉及到了图形用户界面的设计、事件处理、数据结构的应用以及基本的算法设计。对于MFC的初学者来说,这样的项目不仅有助于理解MFC的工作原理,还能提升...

    用c++编的一个五子棋程序

    总的来说,这个五子棋程序是一个基础的两玩家游戏实现,它涉及到了控制台交互、数据结构(二维数组)的使用、基本的输入输出处理以及简单的游戏逻辑。对于学习C++编程和游戏开发的人来说,这是一个很好的起点,可以...

    一个五子棋程序MFC(经典练习程序)

    而利用MFC(Microsoft Foundation Classes)框架开发的五子棋程序,将传统的游戏与现代编程技术完美结合,为我们提供了一个深入学习和实践计算机人工智能的好平台。 MFC是微软为Windows应用程序开发提供的C++类库,...

    C#制作的五子棋程序

    在本文中,我们将深入探讨如何使用C#编程语言制作一个五子棋程序,这是一个非常有趣且具有挑战性的项目,尤其适合初学者进行实践。五子棋是一种两人对弈的策略游戏,目标是先在棋盘上形成连续的五个棋子(横、竖或...

    利用EasyX图形库实现五子棋程序(C语言课程设计)C语言入门 言简意赅

    在本课程设计中,我们将利用EasyX图形库来实现一个五子棋程序,这将是一个很好的C语言学习项目,尤其适合初学者。EasyX是一个基于Windows API的小巧易用的图形库,它使得C语言进行图形编程变得简单,极大地简化了...

    五子棋程序

    在这个项目中,我们将会深入探讨如何利用Eclipse这一强大的Java集成开发环境来构建一个五子棋程序,这对于初学者来说是一个很好的实践机会,不仅可以提升编程技能,还能理解游戏逻辑的实现。 首先,我们要了解...

    这是一个用vb编写的五子棋程序,对初学者非常有用

    本篇文章将深入探讨如何使用VB编写一个五子棋程序,这对于初学者来说是一个很好的实践项目,不仅可以提升编程技能,还能对游戏逻辑和人机交互有更深刻的理解。 首先,我们要理解五子棋的基本规则。五子棋是两人对弈...

    visual c++ mfc的一 五子棋程序

    本篇文章将深入探讨如何使用MFC创建一个五子棋程序,以及这个过程中的关键知识点。 **一、MFC框架介绍** MFC是基于Windows SDK的,它封装了大量的Windows API函数,提供了许多预定义的C++类,如CWinApp、CWnd、...

    javascript编写的五子棋程序

    JavaScript编写的五子棋程序是一种基于网页的交互式游戏,主要利用了...通过这样一个五子棋程序,开发者不仅可以锻炼JavaScript的基本技能,还能深入理解游戏逻辑、用户交互和性能优化等多个方面,提升综合开发能力。

    简单的小游戏五子棋程序

    在编程领域,实现一个五子棋程序是一项基础而有趣的练习,尤其对于初学者而言,它能帮助理解和掌握游戏逻辑、图形界面设计以及算法应用等多方面知识。下面我们将深入探讨如何基于给定的描述和标签,构建一个简单的...

    C++版五子棋程序(含源代码)

    在编程领域,实现一个五子棋程序不仅能锻炼编程技能,也是学习算法和逻辑思维的好方式。本篇文章将深入探讨由BrainDeveloper(蔡智聪)编写的C++版五子棋程序,包括其主要功能、实现原理以及源代码解析。 首先,这...

    一个简单的五子棋程序。。。

    在计算机领域,实现一个五子棋程序不仅能帮助初学者理解基础的编程概念,还能让他们在实践中体验到算法的魅力。下面,我们将深入探讨如何使用编程语言来构建一个五子棋程序。 一、编程语言选择 在“编程语言”这一...

    python开发的五子棋程序

    本项目是用Python语言开发的一个五子棋程序,涵盖了源代码、可执行程序以及详细的使用说明,对于学习Python编程,特别是游戏开发的初学者来说,这是一个非常有价值的资源。 1. **Python基础知识** Python是一种...

    C#五子棋程序

    本文将深入探讨如何使用C#语言来开发一个五子棋程序,针对初级新手,旨在提供一个易懂、可实践的学习路径。 1. **基础环境搭建**: 在开始编写代码之前,我们需要安装C#的开发环境,如Visual Studio。安装完毕后,...

    五子棋程序用VC++

    在本文中,我们将深入探讨如何使用VC++(Visual C++)这一强大的编程工具来实现一个五子棋程序。五子棋是一种古老的双人对弈游戏,简单易学但策略深奥,深受玩家喜爱。通过VC++进行Windows编程,我们可以创建一个...

    用VB变得五子棋程序,项目工程

    在VB(Visual Basic)编程环境中,创建一个五子棋程序是一项有趣的挑战,它涉及图形用户界面(GUI)设计、事件处理、游戏逻辑等多个知识点。在这个项目工程中,开发者使用VB来实现了一个允许用户通过鼠标点击进行...

    C#写的五子棋教学程序

    本教程将深入探讨如何利用C#语言开发一个五子棋程序,以此来教授C#的基本语法、面向对象编程概念以及游戏逻辑实现。 一、C#基础语法 在开发五子棋程序前,我们需要了解C#的基本语法结构,包括变量声明、数据类型、...

Global site tag (gtag.js) - Google Analytics