`
xiaodongdong
  • 浏览: 81247 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

课程设计之跑得快游戏开发

阅读更多

一、系统说明:

本系统是对现实中跑得快游戏的模拟,加入了对各中出牌组合的判断,并参考了当前比较流行的一些扑克牌游戏进行设计

 

二、模块说明:

1.       发牌模块:

        1.生成52张牌,每种花色13

        2.生成随机数,每个玩家根据生成的随机数去52张牌里面取一张,并将这一张从52张里面删除,重复该过程,直到每个玩家拥有13张牌则结束

 

2.       对打模块

1.  如果是某一个玩家先出,则对它选中的牌进行合法性判断,若合法则可以出,否则不可出

2.  如果是上一家出了,则下家对自己的牌进行判断,如果有大于上家的则压上家,否则为不出

 

三、结果展示

 

1.       部分核心代码

 

package cn.zld.pdk.action;

import java.applet.AudioClip;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import cn.zld.pdk.pojo.CardInfo;
import cn.zld.pdk.pojo.Constants;

/**
 * 对即将打出的牌的动作处理
 *
 * @author 张立冬
 * @project 跑得快游戏开发 2010-9-7
 */
public class OutCardAction {

	private static AudioClip audio;

	/**
	 * 对出牌的合法性进行判断
	 *
	 * @return:如果合法返回true,如果不合法返回false
	 */
	public static int judgeOutCards(List<CardInfo> cards) {
		// 如果出的牌的组合有以下几种情况
		// 1.一对对子 2张
		// 2.多对对子且为连对 大于等于6张
		// 3.顺子 大于等于5张的顺子
		// 4.boom 4张 四带二 四带两对 6张
		// 5.三带一 三带一对 三张不带
		if (cards.size() == 0) {
			URL url = OutCardAction.class
					.getResource("/cn/zld/pdk/skin/poker/sound/clock.wav");
			setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
			return Constants.IS_NOCARDS;
		} else if (cards.size() == 1) {
			URL url = OutCardAction.class
					.getResource("/cn/zld/pdk/skin/poker/sound/"
							+ cards.get(0).getCardC() + ".wav");
			setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
			return Constants.IS_ONESINGLE;
		} else {
			Set<Integer> set = new HashSet<Integer>();
			for (int i = 0; i < cards.size(); i++) {
				set.add(cards.get(i).getCardC());
			}
			int size = set.size();
			if (cards.size() == 2 && size == 1) {// 对子
				URL url = OutCardAction.class
						.getResource("/cn/zld/pdk/skin/poker/sound/dui"
								+ cards.get(0).getCardC() + ".wav");
				setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
				return Constants.IS_DOUBLEONE;
			} else if (cards.size() == 3 && size == 1) {// 三个
				URL url = OutCardAction.class
						.getResource("/cn/zld/pdk/skin/poker/sound/sange.wav");
				setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
				return Constants.IS_THREENOONE;
			} else if (cards.size() == 4) {// 四张牌
				if (size == 1) {// boom
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/zhadan.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_BOOM;
				} else if (size == 2
						&& cards.get(1).getCardC() == cards.get(2).getCardC()
						&& (cards.get(0).getCardC() == cards.get(1).getCardC() || cards
								.get(3).getCardC() == cards.get(1).getCardC())) {// 有三张相等
					// 三带一
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/sandaiyi.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_THREEWITHONE;
				}
			} else if (cards.size() == 5) {// 五张牌
				if (size == 2
						&& (cards.get(0).getCardC() == cards.get(1).getCardC() && cards
								.get(3).getCardC() == cards.get(4).getCardC())) {// 前两张和最后两张要相等
					// 三带一对
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/sandaiyidui.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_THREEWITHTWO;
				} else if (size == 5
						&& cards.get(4).getCardC() - cards.get(0).getCardC() == 4) {// 顺子
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/shunzi.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_FIVEORDER;
				}
			} else if (cards.size() == 6) {// 六张牌
				if (size == 2) {
					if (cards.get(3).getCardC() - cards.get(2).getCardC() == 1) {// 不带一张牌的飞机
						URL url = OutCardAction.class
								.getResource("/cn/zld/pdk/skin/poker/sound/feiji.wav");
						setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
						return Constants.IS_TWOTHREENOWITH;
					} else if (cards.get(3).getCardC() == cards.get(2)
							.getCardC()
							&& (cards.get(0).getCardC() == cards.get(1)
									.getCardC() || cards.get(4).getCardC() == cards
									.get(5).getCardC())) {// 四带一对
						URL url = OutCardAction.class
								.getResource("/cn/zld/pdk/skin/poker/sound/sidaier.wav");
						setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
						return Constants.IS_FOUTWITHTWO;
					}
				} else if (size == 3) {
					if (cards.get(3).getCardC() - cards.get(1).getCardC() == 1
							&& cards.get(5).getCardC()
									- cards.get(3).getCardC() == 1
							&& cards.get(2).getCardC()
									- cards.get(0).getCardC() == 1
							&& cards.get(4).getCardC()
									- cards.get(2).getCardC() == 1) {// 连对
						URL url = OutCardAction.class
								.getResource("/cn/zld/pdk/skin/poker/sound/liandui.wav");
						setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
						return Constants.IS_TWOTHREENOWITH;
					} else if (cards.get(3).getCardC() == cards.get(2)
							.getCardC()
							&& (cards.get(0).getCardC() != cards.get(1)
									.getCardC() || cards.get(4).getCardC() != cards
									.get(5).getCardC())) {// 四带两张不一样
						URL url = OutCardAction.class
								.getResource("/cn/zld/pdk/skin/poker/sound/sidaier.wav");
						setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
						return Constants.IS_FOUTWITHTWO;
					}
				} else if (size == 6
						&& cards.get(5).getCardC() - cards.get(0).getCardC() == 5) {// 顺子
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/shunzi.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_SIXORDER;
				}
			} else if (cards.size() == 7 && size == 7
					&& cards.get(6).getCardC() - cards.get(0).getCardC() == 6) {// 七张牌
				URL url = OutCardAction.class
						.getResource("/cn/zld/pdk/skin/poker/sound/shunzi.wav");
				setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
				return Constants.IS_SEVENORDER;
			} else if (cards.size() == 8) {// 八张牌
				if (size == 3
						&& (cards.get(1).getCardC() != cards.get(2).getCardC()
								|| cards.get(3).getCardC() != cards.get(4)
										.getCardC() || cards.get(5).getCardC() != cards
								.get(6).getCardC())
						&& cards.get(0).getCardC() == cards.get(1).getCardC()
						&& cards.get(2).getCardC() == cards.get(3).getCardC()
						&& cards.get(4).getCardC() == cards.get(5).getCardC()
						&& cards.get(6).getCardC() == cards.get(6).getCardC()) {// 四带两对
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/sidailiangdui.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_FOUTWITHFOURP;
				} else if (size == 3
						&& (cards.get(3).getCardC() - cards.get(2).getCardC() == 1 || cards
								.get(5).getCardC()
								- cards.get(4).getCardC() == 1)
						&& (cards.get(0).getCardC() == cards.get(1).getCardC() || cards
								.get(6).getCardC() == cards.get(7).getCardC())) {// 带一对的飞机
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/feiji.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_TWOTHREEWITHTWO;
				} else if (size == 4) {
					if (cards.get(7).getCardC() - cards.get(0).getCardC() == 3
							&& cards.get(0).getCardC() == cards.get(1)
									.getCardC()
							&& cards.get(2).getCardC() == cards.get(3)
									.getCardC()
							&& cards.get(4).getCardC() == cards.get(5)
									.getCardC()
							&& cards.get(6).getCardC() == cards.get(7)
									.getCardC()) {// 四对的连对
						URL url = OutCardAction.class
								.getResource("/cn/zld/pdk/skin/poker/sound/liandui.wav");
						setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
						return Constants.IS_DOUBLEFOUE;
					} else if ((cards.get(0).getCardC() != cards.get(1)
							.getCardC() || cards.get(6).getCardC() != cards
							.get(7).getCardC())
							&& (cards.get(3).getCardC()
									- cards.get(2).getCardC() == 1
									|| cards.get(4).getCardC()
											- cards.get(3).getCardC() == 1 || cards
									.get(5).getCardC()
									- cards.get(4).getCardC() == 1)) {// 飞机带两张
						URL url = OutCardAction.class
								.getResource("/cn/zld/pdk/skin/poker/sound/feiji.wav");
						setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
						return Constants.IS_TWOTHREEWITHTWO;
					}
				} else if (size == 8
						&& cards.get(7).getCardC() - cards.get(0).getCardC() == 7) {
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/shunzi.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_EIGHTORDER;
				}
			} else if (cards.size() == 9) {// 九张牌
				if (size == 3
						&& cards.get(3).getCardC() - cards.get(2).getCardC() == 1
						&& cards.get(6).getCardC() - cards.get(5).getCardC() == 1) {// 三个三个
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/feiji.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_THREETHREENOWITH;
				} else if (size == 9
						&& cards.get(8).getCardC() - cards.get(0).getCardC() == 8) {// 顺子
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/shunzi.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_NINEORDER;
				}

			} else if (cards.size() == 10) {// 十张牌
				if (size == 5
						&& cards.get(9).getCardC() - cards.get(0).getCardC() == 4
						&& cards.get(0).getCardC() == cards.get(1).getCardC()
						&& cards.get(2).getCardC() == cards.get(3).getCardC()
						&& cards.get(4).getCardC() == cards.get(5).getCardC()
						&& cards.get(6).getCardC() == cards.get(7).getCardC()
						&& cards.get(8).getCardC() == cards.get(9).getCardC()) {// 五对的
					// 连对
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/liandui.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_DOUBLEFIVE;

				} else if (size == 4) {// 带两对的飞机
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/feiji.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_TWOTHREEWITHFOUR;
				} else if (size == 10
						&& cards.get(9).getCardC() - cards.get(0).getCardC() == 9) {// 顺子
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/shunzi.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_TENORDER;
				}

			} else if (cards.size() == 11) {// 十一张牌
				if (size == 11
						&& cards.get(10).getCardC() - cards.get(0).getCardC() == 10) {// 顺子
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/shunzi.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_ELEVENORDER;
				}
			} else if (cards.size() == 12) {// 十二张牌
				if (size == 12
						&& cards.get(11).getCardC() - cards.get(0).getCardC() == 11) {// 顺子
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/shunzi.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_TWELVEORDER;
				}
			} else if (cards.size() == 13) {// 十三张牌
				if (size == 13
						&& cards.get(12).getCardC() - cards.get(0).getCardC() == 12) {// 顺子
					URL url = OutCardAction.class
							.getResource("/cn/zld/pdk/skin/poker/sound/shunzi.wav");
					setAudio(java.applet.Applet.newAudioClip(url)); // 声音剪辑对象
					return Constants.IS_THIRETENORDER;
				}
			}
		}
		return Constants.IS_ILLEGLE;
	}

	/**
	 * 搜索玩家可以出的牌
	 *
	 * @param myCards
	 * @return:返回玩家可以出的牌
	 */
	public static List<CardInfo> searchCards(int type,
			List<CardInfo> frontCards, List<CardInfo> myCards) {
		List<CardInfo> outCards = new ArrayList<CardInfo>();
		List<CardInfo> newCards = new ArrayList<CardInfo>();
		newCards=myCards;
		if (type == Constants.IS_ONESINGLE) { // 单张
			for (int i = 0; i < newCards.size(); i++) {
				if (myCards.get(i).getCardC() > frontCards.get(0).getCardC()) {
					outCards.add(myCards.get(i));
					myCards.remove(i);
					i=newCards.size();
					judgeOutCards(outCards);
				}
			}
			judgeOutCards(outCards);
		} else if (type == Constants.IS_DOUBLEONE) {// 一对
			for (int i = 0; i < newCards.size() - 1; i++) {
				if (myCards.get(i).getCardC() > frontCards.get(0).getCardC()
						&& myCards.get(i).getCardC() == myCards.get(i + 1)
								.getCardC()) {
					outCards.add(myCards.get(i));
					outCards.add(myCards.get(i+1));
					myCards.remove(outCards.get(0));
					myCards.remove(outCards.get(1));
					judgeOutCards(outCards);
					break;
				}
			}
		} else if (type == Constants.IS_DOUBLETHREE) {// 三对连对
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_DOUBLEFOUE) {// 四对连对
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_DOUBLEFIVE) {// 五对连对
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_DOUBLESIX) {// 六对连对
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_THREENOONE) {// 三个
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_THREEWITHONE) {// 三带一

		} else if (type == Constants.IS_THREEWITHTWO) {// 三带二

		} else if (type == Constants.IS_BOOM) {// boom
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_FOUTWITHTWO) {// 四带二
		} else if (type == Constants.IS_FOUTWITHFOURP) {// 四带两对

		} else if (type == Constants.IS_FIVEORDER) {// 5顺子
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_SIXORDER) {// 6顺子
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_SEVENORDER) {// 7顺子
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_EIGHTORDER) {// 8顺子
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_NINEORDER) {// 9顺子
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_TENORDER) {// 10顺子
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_ELEVENORDER) {// 11顺子
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_TWELVEORDER) {// 12顺子
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_THIRETENORDER) {// 13顺子
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_TWOTHREENOWITH) {// 两个三张飞机不带
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_TWOTHREEWITHTWO) {// 两个三张带两张
		} else if (type == Constants.IS_TWOTHREEWITHFOUR) {// 两个三张带两对

		} else if (type == Constants.IS_THREETHREENOWITH) {// 三个三张飞机不带
			return isHave(type, frontCards, myCards);
		} else if (type == Constants.IS_THREETHREEWITHTHREE) {// 三个三张带三张
		}
		return outCards;
	}

	public static void setAudio(AudioClip audio) {
		OutCardAction.audio = audio;
	}

	public static AudioClip getAudio() {
		return audio;
	}

	public static List<CardInfo> isHave(int type, List<CardInfo> frontCards,
			List<CardInfo> myCards) {
		List<CardInfo> outCards=new ArrayList<CardInfo>();
		List<CardInfo> tempCards=new ArrayList<CardInfo>();
		int msize = myCards.size();
		int fsize = frontCards.size();
		for (int i = 0; i < msize; i++) {
			if (myCards.get(i).getCardC() > frontCards.get(0).getCardC()) {
				if (i + fsize > 12) {// 如果之后的张数加起来不够说明没有
					break;
				} else {
					for (int j = i; j < i + fsize-1; j++) {// 够就取出同样多的牌进行判断
						tempCards.add(myCards.get(j));
					}
					if (judgeOutCards(tempCards) == type) {// 如果类型相同就说明存在
						for (int p = 0; p < tempCards.size(); p++) {
							myCards.remove(tempCards.get(p));
						}
						outCards=tempCards;
						return outCards;
					}
				}
			}
		}
		return outCards;
	}

}

 

1.       最终运行结果

 

  程序进入



 

按下开始按钮后随机发牌



 

四家开打

 由于本人对牌的组合的判断主要是用到了集合类List 和 Set结合进行的判断,算法不是很好,还望有更好算法的人进行指教

源码可以在附件下载到,声音文件由于太大,故没有上传,需要的可以留言

  • src.rar (2.2 MB)
  • 下载次数: 594
分享到:
评论
12 楼 lovetangsong 2011-08-20  
574465406@qq.com   希望发一份学习一下
11 楼 haiyang714 2011-04-15  
10 楼 weilingfeng98 2011-01-24  
把我的机器跑死了
9 楼 xiaodongdong 2010-09-22  
yulidrff 写道
你的src运行时报错

没有声音文件肯定会报空指针,你把那些代码注掉就OK
8 楼 yulidrff 2010-09-21  
你的src运行时报错
7 楼 yycn31 2010-09-21  
能给我发一份吗? zswy.34@163.com  谢谢
6 楼 xiaodongdong 2010-09-19  
joknm 写道
太多太多的 if else 了,让人看了眼花。

没办法;我实在是想不出别的办法,昨晚失眠在想这个问题,想是想到了一种比较好的方法,接下来就差实现了,不过最近有点忙,估计得往后拖了
5 楼 joknm 2010-09-19  
太多太多的 if else 了,让人看了眼花。
4 楼 bastengao 2010-09-18  
楼主写的代码有一点夸张。这么多的 case,if else。
3 楼 瓶鱼跃 2010-09-17  
看了楼主写的博文!!!楼主也是本科在读么?!? 相比之下,在下惭愧的很啊!····汗颜!···
2 楼 yayg 2010-09-17  
不错不错,能把声音发我一份么?yayg2008@163.com
1 楼 kowloonchen 2010-09-17  
不错不错!!~~

相关推荐

    纸牌游戏:联机跑得快(c语言编写,内含源程序和设计文档)

    《联机跑得快》是一款基于C语言编程的纸牌游戏,曾在某个学院的C语言比赛中荣获一等奖,因此它不仅是一个娱乐项目,更是一个优秀的学习资源,尤其对于想要深入理解C语言的同学来说极具价值。本游戏是通过VC++集成...

    Java打扑克小游戏:“争上游”or“跑得快”.zip

    在本项目中,"Java打扑克小游戏:“争上游”or“跑得快”.zip" 提供了一个使用Java语言开发的后端游戏项目,主要目标是实现一款名为"争上游"或"跑得快"的扑克牌游戏。这个游戏通常由3到4人参与,玩家的目标是尽快出...

    基于蒙特卡洛算法跑得快AI棋牌游戏源码(Java版本).zip

    基于蒙特卡洛算法跑得快AI棋牌游戏源码(Java版本).zip 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、...

    html5快跑.zip

    HTML5快跑是一款基于HTML5技术开发的游戏源码,它展示了HTML5在游戏...通过深入研究"html5快跑.zip"的源码,开发者不仅可以提升HTML5和JavaScript技能,还能了解游戏开发的整个流程,对游戏设计和实现有更全面的理解。

    棋牌游戏C语言源码,斗地主、麻将、跑得快、德州扑克、捕鱼cocos2d等。本项目开源的代码是管理员控制后台代码。 .zip

    相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可以基于此项目进行扩展来开发出更多...

    方块快跑-少儿编程scratch项目源代码文件案例素材.zip

    总的来说,"方块快跑-少儿编程scratch项目源代码文件案例素材.zip"是一个全面的学习资源,它将编程知识融入到游戏之中,使学习过程变得生动有趣。通过这个项目,孩子们不仅能学习到基本的编程概念,还能锻炼他们的...

    跑步APP存在的问题及发展策略.pdf

    2. **情景模拟功能**:通过模拟各种故事情节或游戏场景,让跑步变得更具趣味性,吸引那些容易放弃锻炼的人群。例如“Runstastic”、“天天酷跑”和“咕咚”。 3. **个性定制功能**:根据用户需求提供定制化的训练...

    Scratch3.0高清视频基础进阶天才27课之6-10.rar

    Scratch3.0是一款由麻省理工学院(MIT)的“终身幼儿园团队”开发的图形化编程工具,专为儿童设计,旨在通过游戏化的学习方式,帮助他们掌握基本的编程概念。这款工具采用积木块的形式,使得编程变得更加直观和易于...

    第19类:P5编辑器中的霸王龙

    在这个课程中,我们将深入探讨如何利用P5.js的功能来设计一款类似于经典浏览器游戏“恐龙快跑”的体验。 首先,P5.js是一个强大的JavaScript库,它简化了图形绘制、动画制作和交互式设计的过程。在P5编辑器中,你...

    c语言编写单片机技巧

    平时可以多看看相关的电子技术杂志网站,看看别人的开发经验,硬件设计方案以及他人的软件设计经验。有可能的话,还可以参加一些电子设计大赛,借此机会2--3个人合作做一个完整系统,会更有帮助。到了大四毕业设计...

    ps1:CS4414的问题集1的起始代码

    【标题】"ps1:CS4414的问题集1的起始代码"涉及的是一个计算机科学课程,CS4414,的编程作业。这里的"ps1"通常指的是Problem Set 1,即课程的第一个编程任务。从描述来看,这个压缩包包含的是问题集1的起始代码,意味...

Global site tag (gtag.js) - Google Analytics