python 项目 Memory game

效果显示
1,生成16个数(new game())
用到range,num.extend(),及random.shuffle()函数
2,每张卡片是否显示其值的状态
exposed = True or False
3,判定点击卡片时所处的状态(if,else语句)
通过常量state=0,1,2,,划定点击的状态,即点击前0,点击一张卡片后的状态1,点击2张卡片的状态2
4,判断点击的两张卡片 的值是否相等(if,else语句)
如果实现这一步就必须知道点击每张卡片的序列,通过num[index1]是否等于num[index2]
index =pos[0]/(卡片的宽度),pos[0]代表鼠标点击的横坐标
5,draw(canvas):
用for循环显示exposed=True的卡片 即连续点击的两个数值相等的卡片
for n in num:
if exposed[index]:
canvas.set_text(str(n), (position, 60), 46,”White”)
…….
具体程序如下

# implementation of card game - Memory

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的深度强化学习代码示例,使用Python编写,使用了Keras和CSDN Gym: ```python import gym import random import numpy as np from keras.models import Sequential from keras.layers import Dense from keras.optimizers import Adam env = gym.make('CartPole-v1') env.reset() goal_steps = 500 score_requirement = 60 initial_games = 10000 def model_data_preparation(): training_data = [] accepted_scores = [] for game_index in range(initial_games): score = 0 game_memory = [] previous_observation = [] for step_index in range(goal_steps): action = random.randrange(0,2) observation, reward, done, info = env.step(action) if len(previous_observation) > 0: game_memory.append([previous_observation, action]) previous_observation = observation score += reward if done: break if score >= score_requirement: accepted_scores.append(score) for data in game_memory: if data[1] == 1: output = [0,1] elif data[1] == 0: output = [1,0] training_data.append([data[0], output]) env.reset() print(accepted_scores) return training_data def build_model(input_size, output_size): model = Sequential() model.add(Dense(128, input_dim=input_size, activation='relu')) model.add(Dense(52, activation='relu')) model.add(Dense(output_size, activation='linear')) model.compile(loss='mse', optimizer=Adam()) return model def train_model(training_data): X = np.array([i[0] for i in training_data]).reshape(-1,len(training_data[0][0])) y = np.array([i[1] for i in training_data]).reshape(-1,len(training_data[0][1])) model = build_model(input_size=len(X[0]), output_size=len(y[0])) model.fit(X, y, epochs=10) return model training_data = model_data_preparation() trained_model = train_model(training_data) scores = [] choices = [] for each_game in range(100): score = 0 game_memory = [] prev_obs = [] env.reset() for _ in range(goal_steps): env.render() if len(prev_obs)==0: action = random.randrange(0,2) else: action = np.argmax(trained_model.predict(prev_obs.reshape(-1,len(prev_obs)))[0]) choices.append(action) new_observation, reward, done, info = env.step(action) prev_obs = new_observation game_memory.append([new_observation, action]) score+=reward if done: break scores.append(score) print(scores) print('Average Score:',sum(scores)/len(scores)) print('Choice 1:{} Choice 0:{}'.format(choices.count(1)/len(choices),choices.count(0)/len(choices))) ``` 这个代码使用CartPole-v1环境,目标是使杆子不掉下来。它使用了一个神经网络,通过学习之前的游戏来预测下一个动作。最后,代码输出了模型在100个游戏中的平均得分和选择每个动作的频率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值