设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4083|回复: 26
打印 上一主题 下一主题

[随意闲聊] 『从零开始』每天写个小游戏

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
43 小时
注册时间
2013-11-30
帖子
21
跳转到指定楼层
1
发表于 2013-11-30 09:17:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 maweiblue 于 2013-11-30 14:00 编辑

平时很喜欢研究游戏技术,也用工具做过几个小游戏,但总是感觉很有局限性,所以下定决心,开始学习编程,虽然没有什么基础,但相信天道酬勤,只要坚持下来,总会有所收获,希望通过一段时间的努力,能做出自己心仪的游戏,在此发帖也是希望给自己个动力,能坚持下去。

语言我选择JAVA,跨平台,入门比较简单,做PC,安卓小游戏都十分适合。

由于没有编程基础,代码写的较挫,请前辈们原谅,能给出意见建议一定虚心接受。

game no.1(11.30)

JAVA 代码复制
  1. import java.util.Scanner;
  2. public class MyTest {
  3.         /**
  4.          * 猜100以内数字的小游戏,最后给出猜的次数,
  5.          * @param args
  6.          */
  7.         public static void main(String[] args){
  8.                 //生成一个100的随机数字
  9.                 int myrandom=(int)(100*Math.random());
  10.                 //生成一个Scanner对象
  11.                 Scanner myscanner=new Scanner(System.in);
  12.                 System.out.print("开始输入你的数字");
  13.                 //开始接受输入一个数字
  14.                 int myint=myscanner.nextInt();
  15.                 //这个用来记录猜的次数
  16.                 byte testnum=0;
  17.                 //开始一个循环,如果猜的数字和生成的随机数不同,就提示大小;
  18.                 while(myint!=myrandom){
  19.                 if(myint>myrandom){
  20.                         System.out.println("你猜的数字大了,再来一次吧");
  21.                         }else{
  22.                         System.out.println("你猜的数字小了,再来一次吧");
  23.                         }
  24.                          myint=myscanner.nextInt();
  25.                         testnum++;
  26.                 }
  27.                 //成功就跳出,并且给出
  28.                 System.out.print("完美成功了哈哈,你一共试了"+testnum+"次");
  29.         }
  30. }

运行状态




game no 2:(11.30)

刚刚学了类和对象,趁着还没忘,先写个非常传统的RPG游戏,复刻勇者斗恶龙
新建一个Creative类
JAVA 代码复制
  1. package com.linuxgame.test;
  2. /**
  3.  * 创造物父类,定义一些基本的属性方法
  4.  * @author Administrator
  5.  *
  6.  */
  7. public class Creative {
  8.         //创造物的名字
  9.         protected String name;
  10.         //定义HP
  11.         protected int hp;
  12.         //定义攻击力strenth
  13.         protected int str;
  14.         //定义幸运值luck
  15.         protected int luk;
  16.         //构造函数
  17.         public Creative(String name,int hp,int str,int luk){
  18.                 this.name=name;
  19.                 this.hp=hp;
  20.                 this.str=str;
  21.                 this.luk=luk;
  22.                 System.out.println(this.name+"出现在地图上");
  23.  
  24.         }
  25.         //作为一只合格的怪物,最要紧的是要会攻击!不会攻击的怪物不是好怪物!
  26.         //作为一只风骚的英雄,最要紧的是要会攻击!不会开车的裁缝不是好厨子!
  27.         public void attack(Creative obj){
  28.                         //产生一个攻击伤害,由力量和幸运共同产生;
  29.                         int attacknum=this.str+(int)(this.luk*Math.random());
  30.                         obj.attacked(attacknum);
  31.                 }
  32.         //这个函数表示被抽时候扣掉HP
  33.         public void attacked(int attacknum){
  34.                 this.hp-=attacknum;
  35.  
  36.         }
  37.         //这个是传说中的血条
  38.         public int getHp(){
  39.                 return this.hp;
  40.         }
  41.         //总的说些什么吧
  42.         public void say(String hehe){
  43.                 System.out.print(hehe);
  44.  
  45.         }
  46.  
  47. }


然后再定义一个英雄类啦
JAVA 代码复制
  1. package com.linuxgame.test;
  2. /**
  3.  * 这个类当然是定义了一个英雄类了哈哈哈哈哈
  4.  * @author Administrator
  5.  *
  6.  */
  7. public class Hero extends Creative{
  8.         //作为一个英雄,当然需要一个有主角光环
  9.         public Hero(String name,int hp,int str,int luk){
  10.                 super(name,hp,str,luk);
  11.                 System.out.println("**我是主角光环(made in china)***");
  12.         }
  13.  
  14. }


当然怪物类也是非常必要的。

JAVA 代码复制
  1. package com.linuxgame.test;
  2. /**这个类定义小怪物
  3.  *
  4.  * @author Administrator
  5.  *
  6.  */
  7. public class Monster extends Creative{
  8.         //小怪物出场总要有个背景音乐的吧,来个冷艳风格的
  9.         public Monster(String name,int hp,int str,int luk){
  10.                         super(name,hp,str,luk);
  11.                         System.out.println("*******我是冷艳的背景音乐*******");
  12.  
  13.         }
  14.  
  15. }



最后,生成世界地图,开始大决战了。

JAVA 代码复制
  1. package com.linuxgame.test;
  2. /**
  3.  * 这里是世界地图,英雄和美女,恶龙和兔子,基佬和腐女的传说在这里流传
  4.  * @author Administrator
  5.  *
  6.  */
  7. public class Test {
  8.  
  9.         public static void main(String[] args) {
  10.                 //背景故事
  11.                 System.out.println("很久很久以前,天朝是一个普大喜奔的美丽地方");
  12.                 //生成怪物
  13.                 Monster mon1=new Monster("灰太狼",1000,10,5);
  14.                 //出场台词
  15.                 mon1.say("愚蠢的人类啊!喵");
  16.                 //英雄出场
  17.                 Hero hero1=new Hero("毛小明",98,8,10);
  18.                 //英雄要霸气的台词
  19.                 hero1.say("做了英雄,妈妈再也不用担心我的学习");
  20.                 System.out.println("剧情省略,玩家自己脑补,终于到了决定命运的时刻了");
  21.                 System.out.println("******************************");
  22.                 //战斗太激烈了,完全是不死不休啊
  23.                 while((mon1.getHp()>0)&&(hero1.getHp()>0)){
  24.                         //怪物打英雄
  25.                         mon1.attack(hero1);
  26.                         System.out.println("怪物君打了英雄君");
  27.                         //英雄打怪物
  28.                         if(hero1.getHp()>0){
  29.                                 hero1.attack(mon1);
  30.                                 System.out.println("英雄君打了怪物君");
  31.                         }else{
  32.                                 hero1.say("我的生涯一片无悔,我想起那天夕阳下的奔跑,那是我逝去的青春");
  33.                                 break;
  34.                         }
  35.                         if(mon1.getHp()<=0){
  36.                                 mon1.say("我的生涯一片无悔,我想起那天夕阳下的奔跑,那是我逝去的青春");
  37.                         }
  38.  
  39.                 }
  40.  
  41.  
  42.         }
  43.  
  44. }


运行情况。

评分

参与人数 1星屑 +12 收起 理由
火烧兔子 + 12 塞糖(加油

查看全部评分

Lv2.观梦者

梦石
0
星屑
362
在线时间
1292 小时
注册时间
2013-1-12
帖子
3590

贵宾

2
发表于 2013-11-30 09:52:17 | 只看该作者
本帖最后由 76213585 于 2013-11-29 19:22 编辑

我用Ruby寫寫看好了....  應該不會很難owo

完成!
RUBY 代码复制
  1. def guess_number(max)
  2.   a=rand(max);times=0
  3.   p "Guess the Number"
  4.   loop do
  5.     guess = gets.chomp
  6.     if guess.to_i == a
  7.       p "You won! The number was #{guess}! You have tryed #{times} times!"
  8.       break
  9.     elsif guess.to_i < a
  10.       p "The number is higher than your guess"
  11.       times += 1
  12.     elsif guess.to_i > a
  13.       p "The number is lower than your guess"
  14.       times += 1
  15.     end
  16.   end
  17. end
  18. guess_number(200)


回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
560
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
3
发表于 2013-11-30 11:39:30 | 只看该作者
每次都看到Java =A=
表示我绝对不会学Java(所以不会玩Minecraft Forge= =
一天一个小游戏是太频繁了吧,1周一个差不多……

点评

LBQ
所以静态语言必须死(拿出兵器  发表于 2013-11-30 13:22
怎么不来一个VB版的…  发表于 2013-11-30 12:39
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2749
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

4
发表于 2013-11-30 11:41:48 | 只看该作者
以下是VB版
  1. Sub Main()
  2.   Randomize
  3.   number = Int(Rnd() * 100)
  4.   ans = - 1
  5.   i = 0
  6.   do
  7.     i = 1
  8.     ans = InputBox("Answer")
  9.     If ans > number Then
  10.       MsgBox "What you answer is larger."
  11.     End If
  12.     If ans < number Then
  13.       MsgBox "What you answer is smaller."
  14.     End If
  15.   loop until ans = number
  16.   MsgBox "Congratulations! You have tried" & i & "times"
  17. End Sub
复制代码

点评

今年九月接触编程的……不要要求太高……只会VB/C/Java/Ruby,下一步要学html……  发表于 2013-11-30 12:49
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
6901
在线时间
7028 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

5
发表于 2013-11-30 11:55:07 | 只看该作者
VC++
  1. #include <stdio.h>  
  2. #include <stdlib.h>
  3. #include <time.h>

  4. int n,a,times;
  5. int main()
  6. {
  7. srand(time(NULL));
  8. n = rand()%99+1;
  9. printf("It's number guessing time! Please enter a number from 1 to 99: ");
  10.         scanf("%d",&a);
  11.                 printf("\n");
  12.                 times++;
  13. while (a !=n){
  14.         if (a < n){printf("The number is smaller than your guess.");}
  15.         else if (a > n){printf("The number is bigger than your guess.");}
  16.     printf(" Please try again: ");   
  17.         scanf("%d",&a);
  18.                 printf("\n");
  19.                 times++;
  20. }
  21. printf("Congratulations! The number was %d! You've tried %d times.",n,times);
  22.                 printf("\n\n");
  23.         system("pause");
  24.         return 0;
  25. }
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
43 小时
注册时间
2013-11-30
帖子
21
6
 楼主| 发表于 2013-11-30 12:33:19 | 只看该作者
satgo1546 发表于 2013-11-30 11:39
每次都看到Java =A=
表示我绝对不会学Java(所以不会玩Minecraft Forge= =
一天一个小游戏是太频繁了吧,1 ...

不可能是一个完整的游戏,只是做个练习,完成一个功能
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6643
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

7
发表于 2013-11-30 12:42:16 | 只看该作者
本帖最后由 余烬之中 于 2013-11-30 12:43 编辑

我想用ruby写 发现有人写了 想用C++写 发现有人写了 想用VB写 发现有人写了
就把楼主的代码重写一遍吧 增加了输入-1时退出的功能
  1. import java.util.Scanner;
  2. public class GuessNum {
  3.    public static void main(String[] args) {
  4.       Scanner myscanner = new Scanner(System.in);
  5.       System.out.println("Guess what the number is:");
  6.       int num = (int) (100 * Math.random()), i = 0, g;
  7.       while ((g = myscanner.nextInt()) != num && g != -1) {
  8.          i++;
  9.          if (g > num) System.out.println("Too Big! Guess again:");
  10.          else System.out.println("Too Small! Guess again:");
  11.       }
  12.       if (g == -1) System.out.println(" - Failed - \nYou tried " + i + " times.");
  13.       else System.out.println(" - Succeed - \nYou tried " + i + " times.");
  14.    }
  15. }
复制代码

点评

还可以用C#, objective_C, PHP, .NET, Fortran (泥垢  发表于 2013-12-2 13:31
……还有pascal啊  发表于 2013-11-30 12:46
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
103
在线时间
518 小时
注册时间
2013-4-20
帖子
927
8
发表于 2013-11-30 12:46:00 | 只看该作者
膜拜- -好厉害啊……哦 话说能插入到VX什么的么= =

点评

想多了  发表于 2013-11-30 13:34
前尘往事
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
43 小时
注册时间
2013-11-30
帖子
21
9
 楼主| 发表于 2013-11-30 14:14:44 | 只看该作者
对game2 的一些小小修改。

很久很久以前,天朝是一个普大喜奔的美丽地方
灰太狼出现在地图上
*******我是冷艳的背景音乐*******
灰太狼说:愚蠢的人类啊!喵
毛小明出现在地图上
**我是主角光环(made in china)***
毛小明说:做了英雄,妈妈再也不用担心我的学习
剧情省略,玩家自己脑补,终于到了决定命运的时刻了
******************************
怪物君打了英雄君,造成12伤害
英雄君打了怪物君造成14伤害
怪物君打了英雄君,造成11伤害
英雄君打了怪物君造成15伤害
怪物君打了英雄君,造成13伤害
英雄君打了怪物君造成8伤害
怪物君打了英雄君,造成14伤害
英雄君打了怪物君造成10伤害
怪物君打了英雄君,造成10伤害
英雄君打了怪物君造成14伤害
怪物君打了英雄君,造成10伤害
英雄君打了怪物君造成8伤害
怪物君打了英雄君,造成13伤害
英雄君打了怪物君造成8伤害
怪物君打了英雄君,造成10伤害
英雄君打了怪物君造成16伤害
怪物挂了
灰太狼说:我的生涯一片无悔,我想起那天夕阳下的奔跑,那是我逝去的青春
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
560
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
10
发表于 2013-11-30 17:55:45 手机端发表。 | 只看该作者
maweiblue 发表于 2013-11-30 12:33
不可能是一个完整的游戏,只是做个练习,完成一个功能

像这样的游戏当然容易编写啦。如果你执着于控制台的程序,建议参考一下CraftOS的adventure。(Minecraft Computer Mod OS里的文字冒险游戏
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-18 16:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表