代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C/C++
】
字符画图
作者:
越泽
/ 发布于
2016/6/27
/
614
import java.util.*; public class ASCIIArt { public static void drawline(String a[][], int m, int n, int x1, int y1, int x2, int y2) {// 输入坐标 对应的数组坐标应为 y对应数组横坐标且从下往上 x对应数组列坐标 int i, j; int temp = 0; if (y1 < m && y2 < m) { y1 = m - y1 - 1; y2 = m - y2 - 1;//画图时,输入坐标是从左下为原点,而数组是在左上为【0】【0】 所以坐标要转换 } if (x1 == x2 && x1 < n) { if (y1 > y2) { temp = y1; y1 = y2; y2 = temp; } for (i = y1; i <= y2; i++) { if (a[i][x1] == " -") a[i][x1] = " +"; else a[i][x1] = " |"; // 画竖线 } } else if (y1 == y2 && y1 < m) { if (x1 > x2) { temp = x1; x1 = x2; x2 = temp; } for (j = x1; j <= x2; j++) { if (a[y1][j] == " |") a[y1][j] = " +"; else a[y1][j] = " -"; // 画横线 } } } public static void fillchar(String a[][], int m, int n, int x, int y, String p) { int i, j; int temp[] = new int[n]; int k = 0; int w = m - y - 1; for (j = w; j >= 0; j--) {// 横着填充 if (a[j][x] == " -") break; for (i = x; i < n; i++) { if (a[j][i] == " |") { int count = 0; for (i = i + 1; i < n; i++) { if (a[j][i] == " |") { count++; temp[k++] = i + 1; } // 判断之后 | 的个数 并记录 | 之后的列坐标 } if (count == 2) fillchar(a, m, n, temp[k - 2], y, p); // 当有两个| | 时 // 中间继续填充 递归调用 } else if (a[j][i] == " +") break; else if (a[j][i] == " -") continue; else a[j][i] = p; } } for (i = x; i < n; i++) {// 竖着着填充 if (a[w][i] == " |") break; for (j = w; j < m; j++) { if (a[j][i] == " -" || a[j][i] == " +") break; else if (a[j][i] == " |") continue; else a[j][i] = p; } } } public static void printcanvas(String a[][], int m, int n) { // 打印数组 画出图案 int i, j; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { System.out.print(a[i][j]); } System.out.println(); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int n, m, q; String p; // 定义要填充的字符 int i, j, k; int x1, x2, y1, y2; Scanner sc = new Scanner(System.in); n = sc.nextInt(); // 先输入列 m = sc.nextInt();// 输入行 q = sc.nextInt();// 输入操作个数 String canvas[][] = new String[m][n]; for (i = 0; i < m; i++) for (j = 0; j < n; j++) canvas[i][j] = " ."; for (i = 0; i < q; i++) { k = sc.nextInt(); if (k == 0) { x1 = sc.nextInt(); y1 = sc.nextInt(); x2 = sc.nextInt(); y2 = sc.nextInt(); drawline(canvas, m, n, x1, y1, x2, y2); } else if (k == 1) { x1 = sc.nextInt(); y1 = sc.nextInt(); p = sc.nextLine(); fillchar(canvas, m, n, x1, y1, p); } } printcanvas(canvas, m, n); } }
试试其它关键字
字符画图
同语言下
.
C分鱼问题
.
链表
.
最大连续和
.
编码字符串
.
libiconv字符编码处理及判断字符串是否为utf8
.
一组数中两两二元组,差最大有几对,差最小呢?(数组
.
通过管道获取一个进程的执行状态
.
多关键字排序
.
字符串字典序排序
.
3元一次方程(牛顿迭代法求方程的根)
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
越泽
贡献的其它代码
(
11
)
.
GB2312 和 UTF8 互转
.
使用H5与flash兼容不同浏览器的视频播放
.
实现C/C++联合体操作的数据申明方法
.
屏幕监控 自动截屏程序 主窗体隐藏,仅在进程中显示
.
根据高度和宽度裁剪图片并保存到指定文件目录的示例
.
后台获取前台runat=server的select的值
.
操作文件实现日志功能
.
字符画图
.
cmd判断本地网络状态及强度
.
CSS3实现图片切换特效
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3