自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FREEDOM

hello world

  • 博客(33)
  • 资源 (29)
  • 收藏
  • 关注

原创 matplotlib-绘制精美的图表

matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。本章节作为matplotlib的入

2017-02-26 18:07:56 443

原创 SymPy-符号运算好帮手

SymPy是Python的数学符号计算库,用它可以进行数学公式的符号推导。为了调用方便,下面所有的实例程序都假设事先从sympy库导入了所有内容:>>> from sympy import *4.1 封面上的经典公式本书的封面上的公式:叫做欧拉恒等式,其中e是自然指数的底,i是虚数单位,是圆周率。此公式被誉为数学最奇妙的公式,它将5个基本数

2017-02-26 18:07:10 1663

原创 SciPy-数值计算库

SciPy函数库在NumPy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。由于其涉及的领域众多、本书没有能力对其一一的进行介绍。作为入门介绍,让我们看看如何用SciPy进行插值处理、信号滤波以及用C语言加速计算。3.1 最小二乘拟合假设有一组实验数据(x[i], y[i]),我们知道它们之间的函数关系

2017-02-26 18:05:51 543

原创 numpy 教程

标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似。但是由于它

2017-02-26 12:08:16 934

原创 mysql实现主从复制

今天说一下MySQL的主从复制如何做到!准备工作:1.两个虚拟机:我这里用的是CentOS5.5,IP地址分别是192.168.1.101 和192.168.1.105;       101做主服务器,105做从服务器(都已经安装相同版本的Mysql);2.本机环境:Apache+PHP+MySQL好了,现在开始吧,来看看这听起来高大上的主从复制是

2017-02-24 12:52:00 647

原创 jmeter 非gui形式 测试

注意:需要先在有界面的jmeter上编辑好测试的文件,运行一下,没问题,保存为XX.jmx使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源。使用命令jmeter -n -t -l (比如 jmeter -n -t testplan.jmx -l listener.jtl) 我的第一次使用命令行执行测试脚本时,看到的输出

2017-02-22 15:40:16 865

原创 jmeter 压力测试

1.bin 目录下双击jmeter.bat启动。2.Ramp-Up Period (in seconds)表示线程之间间隔多少时间允许,单位是秒3.链接不用写协议头4.运行结果图:Sample:每个请求的序号Start Time:每个请求开始时间Thread Name:每个线程的名称Label:Http请求名称Sample Tim

2017-02-22 14:24:57 678

原创 cuda 编程

CUDA从入门到精通(零):写在前面在老板的要求下,本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中,使处理程序加速超过1K,可见基于图形显示器的并行计算对于追求速度的应用来说无疑是一个理想的选择。还有不到一年毕业,怕是毕业后这些技术也就随毕业而去,准备这个暑假开辟一个CUDA专栏,从入门到精通,步步为营,顺便分享设计的一些经验教训,希望能

2017-02-21 17:56:49 1155 2

原创 lua 语言介绍及安装

Lua 教程Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Ce

2017-02-21 17:04:11 656

原创 torch 安装

torch 官网http://torch.ch/Installing TorchWe provide a simple installation process for Torch on Mac OS X and Ubuntu 12+:Torch can be installed to your home folder in ~/torch by running thes

2017-02-21 16:23:00 1283

原创 tensorflow 关于张量 shape 数组

```python # 2-D tensor `a` a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3]) => [[1. 2. 3.] [4. 5. 6.]] # 2-D tensor `b` b = tf.constant

2017-02-21 14:10:08 39879 5

原创 TensorFlow 教程

术语表广播操作(Broadcasting operation)一种用numpy-style broadcasting来保证tensor参数的形态兼容的操作。Devices一块可以用来运算并且拥有自己的地址空间的硬件,比如GPU和CPU。evalTensor 的一个方法,返回 Tensor 的值。触发任意一个图计算都需要

2017-02-21 09:31:39 10246

原创 textblob 自己训练模型

textblob 实际上是封装了以下nltk,几乎所有方法都是调用的nltk库。还是用上一篇的训练性别的例子。#coding=utf-8import random, nltkfrom nltk.corpus import namesfrom textblob.classifiers import NLTKClassifierfrom textblob import TextBlob

2017-02-17 16:27:18 2294

原创 nltk 自己训练模型例子

NLTK是Python的一个自然语言处理的模块,其中实现了朴素贝叶斯分类算法。以下,就使用上一篇文中提到的数据,来应用这个模块实现朴素贝叶斯分类。NLTK的实现更加泛化,所以在应用到我们的数据上时需要做一点的转化。首先来看一下NLTK官方文档中给出的一个简单明了的例子,在了解这个例子之后,再设法将同样的模型应用到自己的数据集上。官方给出的例子是英文名中,在知道名字中最后一个字母

2017-02-17 15:06:37 3537

原创 textblob 使用中问题

(1)找不到数据文件错误Errors more Resource u'tokenizers/punkt/english.pickle' not found. Please use the NLTK Downloader to obtain the resource: >>> nltk.download() Searched in: - '/var/www/

2017-02-17 14:47:26 2497

原创 自然语言处理 textblog 安装使用

TextBlob是什么?TextBlob是一个用Python编写的开源的文本处理库。它可以用来执行很多自然语言处理的任务,比如,词性标注,名词性成分提取,情感分析,文本翻译,等等。你可以在官方文档阅读TextBlog的所有特性。github 地址:https://github.com/sloria/TextBlob/文档地址:https://textblob.readthe

2017-02-17 14:46:07 4413 2

原创 自然语言处理工具 nltk 安装使用

github 地址:https://github.com/nltk/nltk/官方地址:http://www.nltk.org/安装及测试Install NLTK: runsudopipinstall-UnltkInstall Numpy (optional): runsudopipinstall-UnumpyTest installation:

2017-02-17 14:39:26 10574

原创 nlp文本处理开源工具,及聊天机器人实现

原文地址:http://www.leiphone.com/news/201702/4OZau7OfcNO0v1u5.html第一篇传送门:聊天机器人的发展状况与分类第二篇传送门:基于规则和检索的聊天机器人引擎本篇文章以这个开源项目为主线进行。数据预处理模型能聊的内容也取决于选取的语料。如果已经具备了原始聊天数据,可以用SQL通过关键字查询一些对话,也就是从大库里选取出一个小

2017-02-15 18:43:13 10968

原创 snownlp 中文语法分析

github地址:https://github.com/isnowfy/snownlp安装 :pip install snownlp方法:# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom . import normalfrom . import segfrom .

2017-02-15 18:32:44 7727

原创 HMM ,MHMM,CRF 优缺点与区别

隐马尔科夫模型(HMM):图1. 隐马尔科夫模型隐马尔科夫模型的缺点: 1、HMM只依赖于每一个状态和它对应的观察对象: 序列标注问题不仅和单个词相关,而且和观察序列的长度,单词的上下文,等等相关。 2、目标函数和预测目标函数不匹配: HMM学到的是状态和观察序列

2017-02-15 17:50:34 23133 2

原创 语料库资源————(三)

语料库文档资料国家语委现代汉语语料库介绍  ※下载次数:5481国家语委现代汉语语料库词类标记集  ※下载次数:3894国家语委现代汉标注语料库数据及使用说明  ※下载次数:4797在线语料库字词频数据现代汉语语料库词频表:在线现代语料库词频数据。  ※下载次数:10266现代汉语语料库分词类词频表:在线现代语料库带词类标注

2017-02-15 10:25:31 6479

原创 语料库————(二)

以下是我国20大知名语料库,书到用时方恨少,还不赶快来收藏?!1.中央研究院近代汉语标记语料库:http://www.sinica.edu.tw/Early_Mandarin/2.中央研究院汉籍电子文献(瀚典全文检索系统)http://www.sinica.edu.tw/ftms-bin/ftmsw33.国家现代汉语语料库:http://124.207.106.21:808

2017-02-15 10:23:13 3269

原创 语料库资源————(一)

国内可用免费语料库(凡没有标注不可用的链接均可用)(一) 国家语委1.国家语委现代汉语语料库http://www.cncorpus.org/现代汉语通用平衡语料库现在重新开放网络查询了。重开后的在线检索速度更快,功能更强,同时提供检索结果下载。现代汉语语料库在线提供免费检索的语料约2000万字,为分词和词性标注语料。2.古代汉语语料库http://www.cncorpu

2017-02-15 10:21:50 4063

原创 django 引入静态文件问题

方法1:nlp_server├── db.sqlite3├── manage.py├── nlp_server│ ├── __init__.py│ ├── __init__.pyc│ ├── nlp│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ └── qg│ │ ├── in

2017-02-15 09:16:28 2684 1

原创 HMM,MEMM,CRF模型的比较(转)

CRF,HMM(隐马模型),MEMM(最大熵隐马模型)都常用来做序列标注;HMM一个最大的缺点就是由于其输出独立性假设,导致其不能考虑上下文的特征,限制了特征的选择,而MEMM模型则解决了这一问题,可以任意的选择特征,但由于其在每一节点都要进行归一化,所以只能找到局部的最优值,同时也带来了标记偏见的问题(label bias),即凡是训练语料中未出现的情况全都忽略掉;而CRF则很好的解

2017-02-13 16:12:37 1155

原创 HMM的(五个基本要素,三个假设,三个解决的问题)

了解HMM的人们,都知道HMM有五个基本要素,三个假设和解决的三个问题:首先看下HMM的五个基本要素:HMM是个五元组λ=( S, O , π,A,B)S:状态值集合,O:观察值集合,π:初始化概率,A:状态转移概率矩阵,B:给定状态下,观察值概率矩阵其次,回忆下HMM的三个假设:1、有限历史性假设,p(si|si-1,si-2,..

2017-02-13 15:56:21 14072

原创 微信,qq,微博 等app开发,各app sdk,开放平台

(1)微信 sdk :https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN(2)qq SDk:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resou

2017-02-10 11:21:31 820

原创 H5 开发ap 框架PhoneGap(cordova)的应用详解

PhoneGap是一套能让你使用HTML5轻松调用本地API接口和发布应用到商店的应用开发平台。官方说有低成本,低开发周期,轻量化等优点,这些咱暂时也没法证明,略过不表。但是有一条跨平台,却是很明显的优势。因为它采用HTML5+JavaScript的模式来开发应用。PhoneGap用JavaScript统一封装了几大平台的本地api(Andriod,IOS,WP8/7,WINRT)等等。。这样的话

2017-02-10 11:16:22 1613

原创 HTML/JS 调用android方法,开发 Android。

初次尝试用HTML/JS开发Android。由于业务需求和大趋势导致,目前纵观很多APP。很多都是用H5+native的方式去开发。关于wepApp和nativeApp它们之前的是是非非就不说了。下面是利用H5应该是JS去调用本地Android的代码。不是什么特别高深的东西。第一布局: 1 RelativeLayout xmlns:and

2017-02-10 11:13:59 2082

原创 iptables 防火墙设置

1、安装iptables防火墙怎么知道系统是否安装了iptables?执行iptables -V,如果显示如:iptables v1.3.5说明已经安装了iptables。如果没有安装iptables需要先安装,执行:yum install iptables在Linux中设置防火墙,以CentOS为例,打开iptables的配置文件:vi /etc

2017-02-09 16:05:42 3416

原创 CRF++模型格式 命令 参数 说明

通过追加-t, –textmodel参数可以输出文本格式的CRF模型文件,通过该模型文本,可以加深对条件随机场的理解或为其他应用所利用。本文旨在介绍CRF++的文本模型格式,具体读取与解码将集成到HanLP中一并开源。训练语料以BMES标注语料为例:那 S音 B韵 E如 S轻 B柔 E的 S夜 B风 E, S惊 S溅 S起 S不 B可 M言 M传 E的 S天

2017-02-08 16:02:04 7825

原创 EM 简单例子

一理论:简版:猜(E-step),反思(M-step),重复;啰嗦版:你知道一些东西(观察的到的数据), 你不知道一些东西(观察不到的),你很好奇,想知道点那些不了解的东西。怎么办呢,你就根据一些假设(parameter)先猜(E-step),把那些不知道的东西都猜出来,假装你全都知道了; 然后有了这些猜出来的数据,你反思一下,更新一下你的假设(parameter),

2017-02-06 10:50:54 877 2

原创 最大熵模型总结

摘要本文对最大熵模型进行了系统性的学习和总结,从不同的角度来解读熵的概念以及最大熵的内涵。对最大熵的具体应用进行了梳理,并介绍了与最大熵相关的一些概念,最后通过一个简单的demo来对最大熵模型进行直观的认识和感悟。引言熵,忘了第一次接触是在物理课上还是在化学课上,总之是描述系统的无序性或者混乱状态,跟热力学第二定律的宏观方向性有关:在不加外力的情况下,总是往混乱状态改变;跟化学反应的方

2017-02-06 09:49:42 958

S3 java sdk 文档-使用手册.pdf

AmazonS3 sdk中文文档

2021-11-03

图像标注-labelImg_windows_v1.7

图像标注-labelImg_windows_v1.7 图像标注-labelImg_windows_v1.7 图像标注-labelImg_windows_v1.7

2020-10-25

xgboost.pmml

sklearn 鸢尾花训练后的pmml模型文件 ,sklearn 鸢尾花训练后的pmml模型文件

2020-10-23

iris.csv

iris.csv

2020-10-23

汉语 词频 标注 语料

汉语 词频 标注 语料 汉语 词频 标注 语料 汉语 词频 标注 语料

2018-07-20

centos win7双系统安装,在win7已经安装的基础上

centos win7双系统安装,在win7已经安装的基础上。

2018-07-20

nlp工具 word2vec nltk textblob crf++ 机器人 中文翻译 繁体转简体 关键词 主题 命名体识别 分词 聚类 词性标注 词向量

本资源属于代码类,是一些nlp工具的使用 nlp 工具 word2vec nltk textblob crf++ (1)机器人 (2)中文翻译,及繁体转简体 (3)关键词提取,主题提取,摘要提取 (4)命名体识别 (5)分词 (6)情感分析,正负类分析 (7)近义词,同义词,句子相似性 (8)聚类,监督,无监督 (9)词性标注 (10)词向量提取

2018-07-20

pcm 静默分析

pcm 静默分析pcm 静默分析pcm 静默分析pcm 静默分析pcm 静默分析pcm 静默分析pcm 静默分析

2017-12-27

nltk python 中文版 pdf

nltk python 中文版 pdf

2017-02-17

CRF++ 训练中文分词

CRF++ 训练中文分词,文件后缀有3标示3列的语料,文件后缀有2,表示2列的语料训练

2017-02-08

springboot

springboot-mybatis demo

2017-01-23

CRF++ 0.58.tar.gz源文件for linux和.zip for windows

CRF++ 目前最新版,包括CRF++ 0.58.tar.gz源文件for linux和.zip for windows 另外,包括一个介绍使用的下载网页文件。

2017-01-18

angular 路由,传值,http

angular 路由,传值,http

2016-11-03

opencv 人脸识别 代码

opencv 人脸识别

2016-10-18

qt 页面切换 与传值

qt 页面切换 与传值

2016-09-05

Qt 子窗口父窗口切换,窗口间传值

Qt 子窗口父窗口切换,窗口间传值

2016-09-04

spring-mvc-jasperReports

spring-mvc-jasperReports

2016-09-03

jasperReports spring mvc 整合代码

2016-09-02

python2.7.6+python for eclipse

python2.7.6+python for eclipse

2016-01-03

MyBatis Generator.

MyBatis Generator

2015-12-20

hibernate3-log4j-slf4j所有包

hibernate3 日志配置所需的三个包 log4j-slf4j

2015-10-07

jstl包

jstl包

2015-09-10

mina2 cs 客户端服务器通信 已经实现完整通信代码

mina2 cs 客户端服务器通信 已经实现完整通信代码

2015-05-31

网页,html5,canvas,js 动态绘制柱形图

网页,html5,canvas,js 动态绘制柱形图

2015-05-31

微信网站模板

微信网站模板

2015-03-04

java二维码制作源码

二维码二维码二维码erweima

2015-03-04

phpmyadmin修改密码

phpmyadmin修改密码,自己总结的,很好用

2014-03-31

俄罗斯方块

import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.*; import javax.swing.Timer; public class Tetris extends JFrame { public Tetris() { Tetrisblok a = new Tetrisblok(); addKeyListener(a); add(a); } public static void main(String[] args) { Tetris frame = new Tetris(); JMenuBar menu = new JMenuBar(); frame.setJMenuBar(menu); JMenu game = new JMenu("游戏"); JMenuItem newgame = game.add("新游戏"); JMenuItem pause = game.add("暂停"); JMenuItem goon = game.add("继续"); JMenuItem exit = game.add("退出"); JMenu help = new JMenu("帮助"); JMenuItem about = help.add("关于"); menu.add(game); menu.add(help); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(220, 275); frame.setTitle("Tetris内测版"); // frame.setUndecorated(true); frame.setVisible(true); frame.setResizable(false); } } // 创建一个俄罗斯方块类 class Tetrisblok extends JPanel implements KeyListener { // blockType 代表方块类型 // turnState代表方块状态 private int blockType; private int score = 0; private int turnState; private int x; private int y; private int i = 0; int j = 0; int flag = 0; // 定义已经放下的方块x=0-11,y=0-21; int[][] map = new int[13][23]; // 方块的形状 第一组代表方块类型有S、Z、L、J、I、O、T 7种 第二组 代表旋转几次 第三四组为 方块矩阵 private final int shapes[][][] = new int[][][] { // i { { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 } }, // s { { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } }, // z { { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } }, // j { { 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, // o { { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, // l { { 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, // t { { 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } } }; // 生成新方块的方法 public void newblock() { blockType = (int) (Math.random() * 1000) % 7; turnState = (int) (Math.random() * 1000) % 4; x = 4; y = 0; if (gameover(x, y) == 1) { newmap(); drawwall(); score = 0; JOptionPane.showMessageDialog(null, "GAME OVER"); } } // 画围墙 public void drawwall() { for (i = 0; i < 12; i++) { map[i][21] = 2; } for (j = 0; j < 22; j++) { map[11][j] = 2; map[0][j] = 2; } } // 初始化地图 public void newmap() { for (i = 0; i < 12; i++) { for (j = 0; j < 22; j++) { map[i][j] = 0; } } } // 初始化构造方法 Tetrisblok() { newblock(); newmap(); drawwall(); Timer timer = new Timer(1000, new TimerListener()); timer.start(); } // 旋转的方法 public void turn() { int tempturnState = turnState; turnState = (turnState + 1) % 4; if (blow(x, y, blockType, turnState) == 1) { } if (blow(x, y, blockType, turnState) == 0) { turnState = tempturnState; } repaint(); } // 左移的方法 public void left() { if (blow(x - 1, y, blockType, turnState) == 1) { x = x - 1; } ; repaint(); } // 右移的方法 public void right() { if (blow(x + 1, y, blockType, turnState) == 1) { x = x + 1; } ; repaint(); } // 下落的方法 public void down() { if (blow(x, y + 1, blockType, turnState) == 1) { y = y + 1; delline(); } ; if (blow(x, y + 1, blockType, turnState) == 0) { add(x, y, blockType, turnState); newblock(); delline(); } ; repaint(); } // 是否合法的方法 public int blow(int x, int y, int blockType, int turnState) { for (int a = 0; a < 4; a++) { for (int b = 0; b < 4; b++) { if (((shapes[blockType][turnState][a * 4 + b] == 1) && (map[x + b + 1][y + a] == 1)) || ((shapes[blockType][turnState][a * 4 + b] == 1) && (map[x + b + 1][y + a] == 2))) { return 0; } } } return 1; } // 消行的方法 public void delline() { int c = 0; for (int b = 0; b < 22; b++) { for (int a = 0; a < 12; a++) { if (map[a][b] == 1) { c = c + 1; if (c == 10) { score += 10; for (int d = b; d > 0; d--) { for (int e = 0; e < 11; e++) { map[e][d] = map[e][d - 1]; } } } } } c = 0; } } // 判断你挂的方法 public int gameover(int x, int y) { if (blow(x, y, blockType, turnState) == 0) { return 1; } return 0; } // 把当前添加map public void add(int x, int y, int blockType, int turnState) { int j = 0; for (int a = 0; a < 4; a++) { for (int b = 0; b < 4; b++) { if (map[x + b + 1][y + a] == 0) { map[x + b + 1][y + a] = shapes[blockType][turnState][j]; } ; j++; } } } // 画方块的的方法 public void paintComponent(Graphics g) { super.paintComponent(g); // 画当前方块 for (j = 0; j < 16; j++) { if (shapes[blockType][turnState][j] == 1) { g.fillRect((j % 4 + x + 1) * 10, (j / 4 + y) * 10, 10, 10); } } // 画已经固定的方块 for (j = 0; j < 22; j++) { for (i = 0; i < 12; i++) { if (map[i][j] == 1) { g.fillRect(i * 10, j * 10, 10, 10); } if (map[i][j] == 2) { g.drawRect(i * 10, j * 10, 10, 10); } } } g.drawString("score=" + score, 125, 10); g.drawString("抵制不良游戏,", 125, 50); g.drawString("拒绝盗版游戏。", 125, 70); g.drawString("注意自我保护,", 125, 90); g.drawString("谨防受骗上当。", 125, 110); g.drawString("适度游戏益脑,", 125, 130); g.drawString("沉迷游戏伤身。", 125, 150); g.drawString("合理安排时间,", 125, 170); g.drawString("享受健康生活。", 125, 190); } // 键盘监听 public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_DOWN: down(); break; case KeyEvent.VK_UP: turn(); break; case KeyEvent.VK_RIGHT: right(); break; case KeyEvent.VK_LEFT: left(); break; } } // 无用 public void keyReleased(KeyEvent e) { } // 无用 public void keyTyped(KeyEvent e) { } // 定时器监听 class TimerListener implements ActionListener { public void actionPerformed(ActionEvent e) { repaint(); if (blow(x, y + 1, blockType, turnState) == 1) { y = y + 1; delline(); } ; if (blow(x, y + 1, blockType, turnState) == 0) { if (flag == 1) { add(x, y, blockType, turnState); delline(); newblock(); flag = 0; } flag = 1; } ; } } }

2014-01-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除