/*
* 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领域,设计一款五子棋程序是一项基础但有趣的任务,它涉及到计算机编程、算法设计以及人机交互等多个方面。下面我们将深入探讨如何实现这样一个程序。 首先,我们要明确五子棋的基本规则。五子棋是一种双人对弈...
在编程领域,实现一个五子棋程序可以锻炼算法设计、图形用户界面(GUI)开发以及人工智能(AI)策略设计等多方面技能。本项目是一个用C++语言编写的五子棋程序,涵盖了人机对战和人人对战模式,让我们一起深入探讨其...
总的来说,利用MFC和VC++6.0开发五子棋程序是一个综合性的项目,涉及到了图形用户界面的设计、事件处理、数据结构的应用以及基本的算法设计。对于MFC的初学者来说,这样的项目不仅有助于理解MFC的工作原理,还能提升...
总的来说,这个五子棋程序是一个基础的两玩家游戏实现,它涉及到了控制台交互、数据结构(二维数组)的使用、基本的输入输出处理以及简单的游戏逻辑。对于学习C++编程和游戏开发的人来说,这是一个很好的起点,可以...
而利用MFC(Microsoft Foundation Classes)框架开发的五子棋程序,将传统的游戏与现代编程技术完美结合,为我们提供了一个深入学习和实践计算机人工智能的好平台。 MFC是微软为Windows应用程序开发提供的C++类库,...
在本文中,我们将深入探讨如何使用C#编程语言制作一个五子棋程序,这是一个非常有趣且具有挑战性的项目,尤其适合初学者进行实践。五子棋是一种两人对弈的策略游戏,目标是先在棋盘上形成连续的五个棋子(横、竖或...
在本课程设计中,我们将利用EasyX图形库来实现一个五子棋程序,这将是一个很好的C语言学习项目,尤其适合初学者。EasyX是一个基于Windows API的小巧易用的图形库,它使得C语言进行图形编程变得简单,极大地简化了...
在这个项目中,我们将会深入探讨如何利用Eclipse这一强大的Java集成开发环境来构建一个五子棋程序,这对于初学者来说是一个很好的实践机会,不仅可以提升编程技能,还能理解游戏逻辑的实现。 首先,我们要了解...
本篇文章将深入探讨如何使用VB编写一个五子棋程序,这对于初学者来说是一个很好的实践项目,不仅可以提升编程技能,还能对游戏逻辑和人机交互有更深刻的理解。 首先,我们要理解五子棋的基本规则。五子棋是两人对弈...
本篇文章将深入探讨如何使用MFC创建一个五子棋程序,以及这个过程中的关键知识点。 **一、MFC框架介绍** MFC是基于Windows SDK的,它封装了大量的Windows API函数,提供了许多预定义的C++类,如CWinApp、CWnd、...
JavaScript编写的五子棋程序是一种基于网页的交互式游戏,主要利用了...通过这样一个五子棋程序,开发者不仅可以锻炼JavaScript的基本技能,还能深入理解游戏逻辑、用户交互和性能优化等多个方面,提升综合开发能力。
在编程领域,实现一个五子棋程序是一项基础而有趣的练习,尤其对于初学者而言,它能帮助理解和掌握游戏逻辑、图形界面设计以及算法应用等多方面知识。下面我们将深入探讨如何基于给定的描述和标签,构建一个简单的...
在编程领域,实现一个五子棋程序不仅能锻炼编程技能,也是学习算法和逻辑思维的好方式。本篇文章将深入探讨由BrainDeveloper(蔡智聪)编写的C++版五子棋程序,包括其主要功能、实现原理以及源代码解析。 首先,这...
在计算机领域,实现一个五子棋程序不仅能帮助初学者理解基础的编程概念,还能让他们在实践中体验到算法的魅力。下面,我们将深入探讨如何使用编程语言来构建一个五子棋程序。 一、编程语言选择 在“编程语言”这一...
本项目是用Python语言开发的一个五子棋程序,涵盖了源代码、可执行程序以及详细的使用说明,对于学习Python编程,特别是游戏开发的初学者来说,这是一个非常有价值的资源。 1. **Python基础知识** Python是一种...
本文将深入探讨如何使用C#语言来开发一个五子棋程序,针对初级新手,旨在提供一个易懂、可实践的学习路径。 1. **基础环境搭建**: 在开始编写代码之前,我们需要安装C#的开发环境,如Visual Studio。安装完毕后,...
在本文中,我们将深入探讨如何使用VC++(Visual C++)这一强大的编程工具来实现一个五子棋程序。五子棋是一种古老的双人对弈游戏,简单易学但策略深奥,深受玩家喜爱。通过VC++进行Windows编程,我们可以创建一个...
在VB(Visual Basic)编程环境中,创建一个五子棋程序是一项有趣的挑战,它涉及图形用户界面(GUI)设计、事件处理、游戏逻辑等多个知识点。在这个项目工程中,开发者使用VB来实现了一个允许用户通过鼠标点击进行...
本教程将深入探讨如何利用C#语言开发一个五子棋程序,以此来教授C#的基本语法、面向对象编程概念以及游戏逻辑实现。 一、C#基础语法 在开发五子棋程序前,我们需要了解C#的基本语法结构,包括变量声明、数据类型、...