.net制作的抽餐厅和游戏装备的小程序

2025-05-29 0 59

随便新建一个asp.net web项目,拖入即可。现在知道为什么游戏老是暴不出好装备,因为他的权重是非常小地。。。中午吃饭随机一下,想去哪一家,就把权重值设大一点,再中不了,就认命吧!

.net制作的抽餐厅和游戏装备的小程序

Default.aspx

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>加权随机</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:TextBox ID="txtNum" runat="server" Text="100" ></asp:TextBox>

<br />

<br />

<asp:Button ID="btnRandom" runat="server" Text="开始抽奖(装备)" onclick="btnRandom_Click"/>

<br />

<br />

<asp:Button ID="btnRandomFood" runat="server" Text="开始抽奖(餐厅)" onclick="btnRandomFood_Click"/>

<br />

<br />

<asp:Button ID="btnClear" runat="server" Text="清屏" onclick="btnClear_Click"/>

<br />

<asp:Literal ID="lblResult" runat="server"></asp:Literal>

</div>

</form>

</body>

</html>

Default.aspx.cs

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192
using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page

{

//<string,int>:<名称:权重>

public Dictionary<string, int> Goods = new Dictionary<string, int>();

public int TotalWeight = 0;

public class Good

{

/// <summary>

/// 名称

/// </summary>

public string Name

{

get;

set;

}

/// <summary>

/// 权重(大于等于1,否则出现的可能性为0)

/// </summary>

public int Weight

{

get;

set;

}

}

public List<Good> Result = new List<Good>();

protected void Page_Load(object sender, EventArgs e)

{

}

/// <summary>

/// 初始化装备 俺是《梦三国》玩家,嘿嘿

/// </summary>

protected void InitGoods()

{

Goods.Clear();

TotalWeight = 0;

Goods.Add("寒冰爪", 2); //神器(拳爪类)

Goods.Add("重毛皮", 300);

Goods.Add("小毛皮", 1000);

Goods.Add("轻毛皮", 1000);

Goods.Add("神之防具打造书", 5);

Goods.Add("传说武器打造书", 20);

Goods.Add("紫檀树枝", 300);

Goods.Add("硬毛皮", 600);

Goods.Add("勾魂水晶", 8);

Goods.Add("真龙炙舞剑", 30);

Goods.Add("董卓勾魂", 1); //神器中的神器(长柄类)

foreach (KeyValuePair<string, int> kvp in Goods)

{

TotalWeight += kvp.Value;

}

}

/// <summary>

/// 初始化餐厅,公司楼下餐厅比较多,只写几个,意思意思。。。

/// </summary>

protected void InitFood()

{

Goods.Clear();

TotalWeight = 0;

Goods.Add("清真兰州", 1);

Goods.Add("长安客", 1);

Goods.Add("迎客松", 1);

Goods.Add("吉祥混沌", 1);

foreach (KeyValuePair<string, int> kvp in Goods)

{

TotalWeight += kvp.Value;

}

}

protected int GetTryParse()

{

try

{

return int.Parse(txtNum.Text);

}

catch {

return 1;

}

}

//开始抽奖(装备)

protected void btnRandom_Click(object sender, EventArgs e)

{

InitGoods();

lblResult.Text = lblResult.Text + "<br/>";

int Count = GetTryParse();

for (int i = 1; i <= Count; i++)

{

Random rdm = new Random(GetRandomSeed());

int Weight = rdm.Next(1, TotalWeight + 1);

ProduceResult(Weight);

}

foreach (KeyValuePair<string, int> kvp in Goods)

{

int c = Result.Count(d => d.Name == kvp.Key);

double rate = c * 1.0 / Count * 1.0 * 100;

lblResult.Text = lblResult.Text + "物品名称:" + kvp.Key + "权重:" + kvp.Value + "暴出次数:" + c.ToString() + "暴出率:" + rate + "%<br/>";

}

}

//开始抽奖(餐厅)

protected void btnRandomFood_Click(object sender, EventArgs e)

{

InitFood();

lblResult.Text = lblResult.Text + "<br/>";

int Count = GetTryParse();

for (int i = 1; i <= Count; i++)

{

Random rdm = new Random(GetRandomSeed());

int Weight = rdm.Next(1, TotalWeight + 1);

ProduceResult(Weight);

}

foreach (KeyValuePair<string, int> kvp in Goods)

{

int c = Result.Count(d => d.Name == kvp.Key);

double rate = c * 1.0 / Count * 1.0 * 100;

lblResult.Text = lblResult.Text + "餐厅名称:" + kvp.Key + "权重:" + kvp.Value + "暴出次数:" + c.ToString() + "暴出率:" + rate + "%<br/>";

}

}

/// <summary>

/// 根据随机权重判断所在范围

/// </summary>

/// <param name="Weight"></param>

protected void ProduceResult(int Weight)

{

int min = 1;

int max = 1;

foreach (KeyValuePair<string, int> kvp in Goods)

{

max = min + kvp.Value - 1;

if (Weight >= min && Weight <= max)

{

Good g = new Good();

g.Name = kvp.Key;

g.Weight = kvp.Value;

Result.Add(g);

return;

}

min = max + 1;

}

}

/// <summary>

/// 随机种子值(防止速度过快造成的重复)

/// </summary>

/// <returns></returns>

private static int GetRandomSeed()

{

byte[] bytes = new byte[4];

System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();

rng.GetBytes(bytes);

return BitConverter.ToInt32(bytes, 0);

}

//清屏操作

protected void btnClear_Click(object sender, EventArgs e)

{

lblResult.Text = "";

}

}

以上所述就是本文的全部内容了,希望大家能够喜欢。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 .net制作的抽餐厅和游戏装备的小程序 https://www.kuaiidc.com/102509.html

相关文章

发表评论
暂无评论