C#游戏编程:《控制台小游戏系列》之《七、键盘熟练工实例》
using System;using CEngine;using CGraphics;namespace Typing{ internal class Letter { /// <summary> /// 字母 /// </summary> private String m_letter; /// <summary> /// 字母码 /// </summary> private Int32 m_code; /// <summary> /// 字母背景色 /// </summary> private ConsoleColor m_backcolor; /// <summary> /// 字母前景色 /// </summary> private ConsoleColor m_fontcolor; /// <summary> /// 字母活动情况 /// </summary> private Boolean m_bAlive; /// <summary> /// 字母窗体位置 /// </summary> private CPoint m_position; /// <summary> /// 随机数 /// </summary> private static Random m_random = new Random(); /// <summary> /// 构造函数 /// </summary> public Letter() { } public String getLetter() { return this.m_letter; } public void setLetter(String letter) { this.m_letter = letter; } public Int32 getCode() { return this.m_code; } public void setCode(Int32 code) { this.m_code = code; } public Char getChar() { return (Char)this.m_code; } public ConsoleColor getBackcolor() { return this.m_backcolor; } public ConsoleColor getFontcolor() { return this.m_fontcolor; } public void setBackcolor(ConsoleColor color) { this.m_backcolor = color; } public void setFontcolor(ConsoleColor color) { this.m_fontcolor = color; } public Boolean getAlive() { return m_bAlive; } public void setAlive(Boolean bAlive) { this.m_bAlive = bAlive; } public CPoint getPosition() { return this.m_position; } public void setPosition(CPoint point) { this.m_position = point; } public void setPosition(Int32 x, Int32 y) { this.m_position.setX(x); this.m_position.setY(y); } /// <summary> /// 随机得到一个字母 /// </summary> public void newLetter() { setLetter(LetterTable.getLetter(m_random.Next(0, 26))); setCode(LetterTable.getLetterCode(getLetter())); setBackcolor((ConsoleColor)m_random.Next(0, 16)); setFontcolor((ConsoleColor)(15 - (Int32)getBackcolor())); setPosition(m_random.Next(1, 30), -1); setAlive(false); } /// <summary> /// 绘制字母 /// </summary> /// <param name="draw"></param> public void draw(CDraw draw) { if (m_bAlive) { draw.setBackcolor(this.m_backcolor); draw.drawText(m_letter, m_position.getX(), m_position.getY(), 1, 1, this.m_fontcolor); } draw.setDrawSymbol(CSymbol.DEFAULT); draw.fillRect(m_position.getX(), m_position.getY() - 1, 1, 1, ConsoleColor.Black); } }} 定义一个字母管理类,用于管理所有下落的字母和配置字母的下落个数和每次下落字母的数量,字母管理类定义为:///LetterManager类实现
试玩链接:http://download.csdn.net/detail/hwenycocodq520/4630387四、结语 实话说,这个游戏DEMO实现得比较仓促,代码写得比较凌乱,但都是些简单的逻辑,相信大家都能看得明白。
- 3楼conmajia2小时前
- 前排占座学习。
- 2楼Joyhen2小时前
- 非常好的例子,可延伸
- 1楼chb345536638昨天 22:43
- 围观学习