2010-10-12 27 views
9

tôi có khai báo biến này trên chương trình của tôi:Chọn Đối Strings Random Trong Commodore 64 BASIC

X="MAGENTA" 
Y="CYAN" 
Z="TAN" 
A="KHAKI" 

Bây giờ những gì tôi muốn là để chọn ngẫu nhiên một trong những điều này và PRINT nó. Nhưng làm thế nào?

+1

+1 for Commodore 64 BASIC! Quá tệ Tôi không biết câu trả lời :-) –

+1

Chà, tôi phải về nhà để tìm hiểu Hướng dẫn lập trình viên của tôi để biết đúng cách để sử dụng RND, nhưng kudo cho một câu hỏi về C64 BASIC :) – p00ya

+0

@Dean : Vâng. Tôi vẫn là một người yêu Commodore 64. Nó vẫn là một nền tảng tuyệt vời, chủ yếu nếu bạn muốn thực hiện một số trò chơi BASIC cũ **:) ** –

Trả lời

4

BASIC của tôi là khá gỉ nhưng bạn chỉ nên có thể sử dụng một cái gì đó như:

10 X$ = "MAGENTA" 
20 Y$ = "CYAN" 
30 Z$ = "TAN" 
40 A$ = "KHAKI" 
50 N = INT(RND(1) * 4) 
60 IF N = 0 THEN PRINT X$ 
70 IF N = 1 THEN PRINT Y$ 
80 IF N = 2 THEN PRINT Z$ 
90 IF N = 3 THEN PRINT A$ 

hoặc, đặt nó trong một chương trình con cho mã tái sử dụng:

10 X$ = "MAGENTA" 
    20 Y$ = "CYAN" 
    30 Z$ = "TAN" 
    40 A$ = "KHAKI" 
    50 GOSUB 1000 
    60 PRINT RC$ 
    70 END 

1000 TV = INT(RND(1) * 4) 
1010 IF TV = 0 THEN RC$ = X$ 
1020 IF TV = 1 THEN RC$ = Y$ 
1030 IF TV = 2 THEN RC$ = Z$ 
1040 IF TV = 3 THEN RC$ = A$ 
1050 RETURN 

Tất nhiên, bạn có thể nên sử dụng mảng cho loại điều đó để bạn có thể sử dụng:

10 DIM A$(3) 
10 A$(0) = "MAGENTA" 
20 A$(1) = "CYAN" 
30 A$(2) = "TAN" 
40 A$(3) = "KHAKI" 
50 PRINT A$(INT(RND(1)*4)) 
+1

Những cân bằng đó có hiệu quả không? Nếu RND tạo ra một flaot, đó phải là <= 1, <= 2, v.v. – p00ya

+1

Vâng, đó chỉ cho thấy làm thế nào gỉ bởi BASIC thực sự là :-) Cố định với một 'INT()' quấn quanh nó. – paxdiablo

+0

Tôi không chắc về Commodore Basic, nhưng tôi nghĩ trong chỉ số bắt đầu của Basic là một mảng thường là 1, vì vậy bạn nên 'DIM A $ (4)'. Nếu bộ nhớ (gỉ) của tôi phục vụ tốt, thì trong bài BASICA/GWBASIC age Basic, có một lệnh 'OPTION BASE' để xác định mảng bắt đầu từ 0 hay từ 1. – ysap